【问题标题】:How can I obtain the outer perimeter of characters in binary images in MATLAB?如何在 MATLAB 中获取二进制图像中字符的外周长?
【发布时间】:2015-10-24 01:39:56
【问题描述】:

我需要获取二进制图像内的字符的外围边缘。我有一封信 A 的图片。该图像是一个二进制矩阵。我已将图像二值化,并将其保存在 20 x 20 矩阵中。我只想获得外部“ON”像素。

总之,我有这张图片:

...我想要这张图片:

在 MATLAB 中执行此操作的最佳方法是什么?

【问题讨论】:

  • 有趣的是,Matlab 中有一个函数叫做edge。这可能会有所帮助。

标签: image matlab image-processing matrix character


【解决方案1】:

我假设您已安装图像处理工具箱。您上传的示例图像是 RGB,因此必须进行一些预处理。先读入图片,再将图片转成二进制。

对于我建议的工作,对象像素需要是白色的,因此您需要反转图像,使其成为黑色背景上的白色文本。完成此操作后,填充任何孔,找到周边,然后重新转换回原始配色方案。

您可能还需要加粗生成的周长,因为这只会找到 1 像素宽的边界。您的示例显示周长为几个像素厚。带有方形结构元素的膨胀在这里会有所帮助。

%// Read in image, convert to binary and invert
im = imread('http://i.stack.imgur.com/ooWFP.jpg');
im = ~im2bw(im);

%// Fill in holes
im_fill = imfill(im, 'holes');

%// Find perimeter
out = bwperim(im_fill);

%// Expand the perimeter and reinvert
out = ~imdilate(out, strel('square', 5));

%// Show image
imshow(out);

我们得到这个:

【讨论】:

  • 不错的结果和解释!
猜你喜欢
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 2010-11-20
  • 2011-08-07
  • 2016-07-14
  • 2018-02-14
相关资源
最近更新 更多