24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1036  |  回复: 11
当前主题已经存档。

qiaoyusun

铁虫 (小有名气)

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


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


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

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的回帖

daxia1997

木虫 (著名写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
可以采用拉伸对比度的方法,具体的忘记了
4楼2009-06-03 20:32:58
已阅   回复此楼   关注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的回帖

bslt

金虫 (著名写手)

--<-<-<@

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
suton(金币+1,VIP+0):谢谢! 6-4 14:47
matlab里面的 histeq 一下

扩展下灰度级。。。
别迷恋哥,哥不只是个传说...
6楼2009-06-04 13:58:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhuzhs

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
先用简单的直方图试试。寻找二值化阈值不很简单的。
当所有一切都已看平淡 是否有一种精致还留在心田
7楼2009-06-04 23:24:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hulex


suton(金币+1,VIP+0):谢谢! 6-14 11:48
可以试试灰度拉伸,就是找到不好区分的部分然后把这个部分的灰度值重新投影到一个新的灰度图像中去。或者使用log函数都灰度图像重新投影
8楼2009-06-14 00:25:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

想飞的猪

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
suton(金币+1,VIP+0):谢谢! 6-15 09:49
我感觉可以试试“灰度窗”!比如一个5*5的区域,算他的均值、方差!然后遍历整个图像一遍!这样再来一次!能把你要的区域分出来吧!
9楼2009-06-15 00:43:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jessicaSHA

铁虫 (初入文坛)

来听听!好专业啊!
心若改变,态度就会改变;态度改变,习惯就改变;习惯改变,人生就会改变。
10楼2009-09-28 00:25:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 qiaoyusun 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见