使用合并到阈值灰度图像
今天,我想说服你使用
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帐户或创建一个新帐户。