去除图像中字符的噪声
Remove noise from characters in an image
我处理了我的输入图像,结果如下。我只需要角色。我试过了,但无法去除字符周围的噪音。
具有小结构元素(如 3 x 3 正方形)的简单侵蚀可以消除小的白噪声轮廓,从而使字符更暗。您还可以利用以下事实:不是字符的黑色区域连接到图像的边界。您可以通过删除连接到边界的区域来从图像中删除这些。
因此,首先使用imerode
, then you will need to remove the boundaries using 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
移除特定区域下方的岛屿来执行一些额外的 post-processing。我选择这个作为实验的 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);
我们现在得到这个:
我处理了我的输入图像,结果如下。我只需要角色。我试过了,但无法去除字符周围的噪音。
具有小结构元素(如 3 x 3 正方形)的简单侵蚀可以消除小的白噪声轮廓,从而使字符更暗。您还可以利用以下事实:不是字符的黑色区域连接到图像的边界。您可以通过删除连接到边界的区域来从图像中删除这些。
因此,首先使用imerode
, then you will need to remove the boundaries using 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
移除特定区域下方的岛屿来执行一些额外的 post-processing。我选择这个作为实验的 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);
我们现在得到这个: