用MATLAB进行图像处理

图像处理概念、算法和MATLAB

使用合并到阈值灰度图像

今天,我想说服你使用 imbinarize 而不是 IM2BW.
背景:我最近看到一些数据表明,许多图像处理工具箱的用户仍然在使用 IM2BW. ,一个旧功能,可在1993年回到原始工具箱版本。我们建议使用较新的功能, imbinarize ,因为它在最常见的场景中节省了一个步骤,而且如果您需要它,它还提供了额外的灵活性。
我会通过更新一个名为的旧博客帖子主题来解释 “跟踪乔治” 我试着提取如下图所示的曲线:
URL =.“https://blogs.mathworks.com/images/steve/36/george.jpg”
I = imread (url);
imshow(i)
我称这个“乔治”。我最初创建了乔治,了解了书中的一些示例和图表 使用MATLAB的数字图像处理 .我发现在某些时候,我需要重现轮廓曲线,但我没有原始曲线数据。(愚蠢的我。)所以,我尝试了从图像中提取原始曲线数据的方法。
第一步显然是给图像设定阈值。在我最初的博文中,我一起使用了两个函数:
阈值= graythresh(我);
bw = im2bw(阈值)
这个函数 曲折 用于计算“最优”阈值(根据某些标准进行最优)。这个函数 IM2BW. 可以在不指定第二个参数的情况下使用,但是它只需使用通常不令人满意的固定阈值:
bw = im2bw(我);
imshow (bw)
结果与 曲折 要好得多。
t = twaythresh(i)
t = 0.4392.
bw2 = im2bw (t);
imshow(bw2)
随着时间的推移,我们发现几乎每个人(包括我们自己)都在使用 IM2BW. 曲折 在一起。这导致了对功能设计的重新考虑。替换功能, imbinarize ,使用 曲折 自动。
bw3 = imbinarize(我);
imshow (bw3)
作为附注,下面是我用来提取曲线的其余代码。看到我的原 "追踪乔治"的博客文章 有关解释。
bw4 = ~ bw3;
BW5 = BWMORPH(BW4,'瘦',INF);
界限= BWBoundaries(BW5);
b =边界{1};
B = B (1:floor(end/2),:);
x = b (:, 2);
Y = B(:1);
绘图(x,y)
ij
平等的
标题(“乔治·p·Burdell”

局部自适应阈值

对于更困难的阈值挑战, imbinarize 还支持局部金宝app自适应方法。为了演示,这里是使用Matlab的数字图像处理的页面的图片,我刚刚在我的办公室拍摄,不均匀的照明。
page_url =.“https://blogs.mathworks.com/steve/files/dipum3e-page-388-gray.jpg”
一个= imread (page_url);
imshow (A)
由于照明不均匀,即使是最佳的全局阈值也不会产生合适的结果。
page_bw = imbinarize(一个);
imshow(page_bw)
你可以看到在右上角有一块缺失的文字区域。局部自适应阈值方法比较好。这个函数 imbinarize 金宝app支持局部自适应方法,使用该方法指定 “自适应” 输入选项。但是,使用本地自适应方法,指定前景是否比背景更浅或较暗是非常有帮助的。你可以告诉 imbinarize 这些信息使用 “ForegroundPolarity” 选项。
这里是它的行动。
page_bw2 = imbinarize (,“自适应”“ForegroundPolarity”“黑暗”);
imshow (page_bw2)
您可以看到,现在所有文本都已干净地包含在生成的二进制图像中。
所以,下次你再伸手 IM2BW. 曲折 ,试着用 imbinarize 代替。
|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击这里登录到您的MathWorks帐户或创建一个新帐户。