【问题标题】:Line thickening image filter for preprocessing of scanned digits用于扫描数字预处理的线加粗图像过滤器
【发布时间】:2014-03-01 01:06:18
【问题描述】:

对于一个学校项目,我构建了一个扫描仪并将其连接到 matlab。扫描仪扫描从 0 到 9 的手写数字的图像(16 x 16 像素)。我正在使用主成分分析来对扫描进行分类。由于扫描仪的精度较低,我需要先对扫描件进行预处理,然后才能真正将它们发送到识别机。

这些预处理步骤之一是加粗线条。到目前为止,我为此使用了一个非常简单的平均过滤器:H = ones(3, 3) ./ 9。这就带来了问题,即数字 8 和 9 的圆形间隙很可能是“闭合的”。我附上了我所有预处理步骤的图片,其中问题是可见的:带有“阈值”标题的图像仍然显示间隙,但在加厚步骤后它消失了。

我的问题是:你知道这个“加厚”步骤的更好过滤器,它不会消除差距吗?或者您是否有一个过滤器的想法,可以在增稠后应用以产生所需的结果?任何其他建议或提示也非常感谢。

【问题讨论】:

    标签: matlab image-processing filtering


    【解决方案1】:
    I=imread('numberreco.png');
    subplot(1,2,1),imshow(I)
    I=rgb2gray(I);
    BW=~im2bw(I,graythresh(I));
     BW2 = bwmorph(BW,'thin');
     I1=double(I).*BW2;
    subplot(1,2,2),imshow(uint8(I1))
    

    留着空隙,你可以从这里开始……

    【讨论】:

      【解决方案2】:

      不是一个非常笼统的答案,但是如果您有图像处理工具箱,并且您的系统不依赖于具有多个灰度级,那么转换为二进制图像并使用来自bwmorph() 的“加厚”操作应该完全可以你想要什么。

      想一想,您还可以使用适当加厚的二值图像作为掩码来恢复孔洞 - 只需将其与模糊的灰度图像相乘,或者,为了获得更大的灵活性:

      • 反转它以形成背景/孔掩码
      • imclearborder() 移除背景,只留下孔洞
      • 可选择扩张蒙版
      • 用作逻辑索引来清除模糊/变亮灰度图像的“洞”区域。

      即使没有形态学步骤,您也可以稍后使用遮罩人为地重新引入原始孔,例如:

      bgmask = (thresholdedimage == 0);  % assuming 0 == background
      holes = imclearborder(bgmask);
      ... % other processing steps
      brightenedimage(holes) = 0;  % punch holes in updated image
      

      【讨论】:

      • 感谢您的提示!不幸的是,二值图像不是一个选项,因为我需要多个灰度级。
      猜你喜欢
      • 2017-01-17
      • 2012-01-02
      • 1970-01-01
      • 2017-07-29
      • 2021-05-19
      • 2015-11-22
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多