【问题标题】:Remove noise from characters in an image去除图像中字符的噪点
【发布时间】:2017-02-08 15:46:01
【问题描述】:

我处理了我的输入图像,结果如下。我只需要角色。我试过了,但无法消除字符周围的噪音。

【问题讨论】:

  • "我处理了我的输入图像然后我找到了它" 处理后你找到了你的图像?是不是藏在什么地方?如果你不知道它在哪里,你是如何处理它的?
  • 我的意思是在处理输入图像后,我找到了 mu.jpg 图像。我想从 mu.jpg 图像中去除文本周围的噪音。
  • 我建议对图像进行二值化,然后应用形态学去除孤立的像素并填充空白。

标签: image matlab image-processing noise-reduction


【解决方案1】:

使用小结构元素(例如 3 x 3 正方形)的简单腐蚀可能会起作用,您可以消除小的白噪声轮廓,从而使字符更暗。您还可以利用非字符的黑色区域连接到图像边界这一事实。您可以通过移除与边界相连的区域来从图像中移除这些区域。

因此,首先使用imerode 执行腐蚀,然后您需要使用imclearborder 删除边界,但这要求接触边界的像素是白色的。因此,将imerode 的输出逆向函数,然后再次逆向。

这样的事情会起作用,我会直接从 Stack Overflow 读取你的图片:

% Read the image and threshold in case
im = imread('https://i.stack.imgur.com/Hl6Y9.jpg');
im = im > 200;

% Erode
out = imerode(im, strel('square', 3));

% Remove the border and find inverse
out = ~imclearborder(~out);

我们现在得到这张图片:

B 附近有一些你可能不想要的孤立黑洞。您可以使用bwareaopen 进行一些额外的后处理,以移除某个区域以下的岛屿。我从实验中选择了 50 像素。您必须在 imclearborder 的输出的反面执行此操作:

% Read the image and threshold in case
im = imread('https://i.stack.imgur.com/Hl6Y9.jpg');
im = im > 200;

% Erode
out = imerode(im, strel('square', 3));

% Remove the border
bor = imclearborder(~out);

% Remove small areas and inverse
out = ~bwareaopen(bor, 50);

我们现在得到了这个:

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 2023-04-10
    • 2016-12-05
    • 2013-09-28
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    相关资源
    最近更新 更多