24小时热门版块排行榜    

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

qiaoyusun

铁虫 (小有名气)

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


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


[ Last edited by gjliu on 2009-5-11 at 13:26 ]
回复此楼
已阅   回复此楼   关注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的回帖
相关版块跳转 我要订阅楼主 qiaoyusun 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见