24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1046  |  回复: 11
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

qiaoyusun

铁虫 (小有名气)

[交流] 【求助】图像预处理的问题


我在做自然场景下的文本的定位,初步是用边缘的统计特征做的,不过检测效果不怎么精确,所以想做改进,希望在检测前将对比度比较小的图像做一些灰度上的处理,使得文本和背景之间的灰度差大一些,但是不知道怎么做才能达到这个目标,我用了一些方法,只对大部分图像有效,对于那些整幅图都比较暗或是文本和背景之间的灰度差不明显的图像都没有效果。


[ Last edited by gjliu on 2009-5-11 at 13:26 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

daxia1997

木虫 (著名写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
可以采用拉伸对比度的方法,具体的忘记了
4楼2009-06-03 20:32:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

zh1985444

金虫 (正式写手)


bslt(金币+1,VIP+0):感谢交流! 4-23 08:57
我觉得不还适合吧,你做这个处理的时候,背景肯定也会跟着变的,要是那么容易就能把背景分开,那么别人做图像分割的不是很容易 ?
2楼2009-04-21 23:00:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qiaoyusun

铁虫 (小有名气)


bslt(金币+1,VIP+0):欢迎常来交流,鼓励一下! 4-23 08:57
引用回帖:
Originally posted by zh1985444 at 2009/4/21 23:00:
我觉得不还适合吧,你做这个处理的时候,背景肯定也会跟着变的,要是那么容易就能把背景分开,那么别人做图像分割的不是很容易 ?

呵呵,灰度的处理当然不能直接就把背景分开了,只是想增加文本和其周围背景之间的对比度。这只是预处理,对于文本的定位来说还没真正开始呢
3楼2009-04-22 10:50:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gjliu

银虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
suton(金币+2,VIP+0):谢谢! 6-4 14:47
如果是图像增强,这个比较容易。 利用OpenCV即可解决,关于opencv的使用请再参考其他的文档。如http://www.opencv.org.cn/

下面是一段直方图均匀化的增强代码

#include "cv.h"

int ImageStretchByHistogram(IplImage *src,IplImage *dst)

{
    //p[]存放图像各个灰度级的出现概率;
    //p1[]存放各个灰度级之前的概率和,用于直方图变换;
    //num[]存放图象各个灰度级出现的次数;

    assert(src->width==dst->width);
    float p[256],p1[256],num[256];
    //清空三个数组
    memset(p,0,sizeof(p));
    memset(p1,0,sizeof(p1));
    memset(num,0,sizeof(num));

    int height=src->height;
    int width=src->width;
    long wMulh = height * width;

    //求存放图象各个灰度级出现的次数
    // to do use openmp
    for(int x=0;x
    {
        for(int y=0;y
        {
            uchar v=((uchar*)(src->imageData + src->widthStep*y))[x];
            num[v]++;
        }
    }

    //求存放图像各个灰度级的出现概率
    for(int i=0;i<256;i++)
    {
        p=num/wMulh;
    }

    //求存放各个灰度级之前的概率和
    for(int i=0;i<256;i++)
    {
        for(int k=0;k<=i;k++)
            p1+=p[k];
    }

    //直方图变换
    // to do use openmp
    for(int x=0;x
    {
        for(int y=0;y
        {
            uchar v=((uchar*)(src->imageData + src->widthStep*y))[x];
            ((uchar*)(dst->imageData + dst->widthStep*y))[x]= p1[v]*255+0.5;           
        }
    }

    return 0;

}

如果用Java有专门的图像库函数,或者相应的网络资源。


如果是Matlab仅仅需要一个函数就解决问题了。

[ Last edited by gjliu on 2009-6-4 at 10:59 ]
5楼2009-06-04 10:57:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见