使用imbinarize设置灰度图像的阈值
今天,我想说服你使用
灌输
而不是
im2bw
.
背景:我最近看到一些数据表明许多图像处理工具箱用户仍在使用
im2bw
,这是一个旧函数,可追溯到1993年的原始工具箱版本。我们建议使用更新的函数,
灌输
,因为它在最常见的场景中节省了一个步骤,并且在需要时提供了额外的灵活性。
网址='https://blogs.mathworks.com/images/steve/36/george.jpg';
I=imread(url);
imshow(I)
我称之为“乔治”。我最初为书中的一些示例和图表创建了乔治
基于MATLAB的数字图像处理
.我在某个时候发现我需要复制轮廓曲线,但我没有原始曲线数据。(愚蠢的我。)因此,我尝试了从图像中提取原始曲线数据的方法。
显然,第一步是对图像设置阈值。在我最初的博文中,我同时使用了两个功能:
阈值=灰度阈值(I);
bw=im2bw(I,阈值)
功能
灰谷
用于计算“最佳”阈值(根据特定标准最佳)。函数
im2bw
可以在不指定第二个参数的情况下使用,但它只使用了一个通常不令人满意的固定阈值:
bw=im2bw(I);
imshow(bw)
结果是
灰谷
好多了。
t=灰度阈值(I)
t=0.4392
bw2=im2bw(I,t);
imshow(bw2)
随着时间的推移,我们发现几乎每个人(包括我们)都会使用
im2bw
和
灰谷
在一起这导致重新考虑功能设计。替换功能,
灌输
,使用
灰谷
自动地
bw3=吸入(I);
imshow(bw3)
bw4=~bw3;
bw5=bwmorph(bw4,“瘦”,inf);
边界=边界(bw5);
b=边界{1};
b=b(1:楼层(结束/2),:);
x=b(:,2);
y=b(:,1);
绘图(x,y)
轴ij
轴相同的
头衔(“乔治·P·伯德尔”)
局部自适应阈值
对于更困难的阈值挑战,
灌输
还支持局部万博1manbetx自适应方法。为了演示,这里有一张图片,是我刚刚在办公室用MATLAB进行数字图像处理的一页,光线不均匀。
网页地址="https://blogs.mathworks.com/steve/files/dipum3e-page-388-gray.jpg";
A=imread(页面url);
imshow(A)
由于光照不均匀,即使是最佳全局阈值也不能产生合适的结果。
page_bw=imbinarize(A);
imshow(第页)
您可以看到右上角有一个缺少文本的区域。局部自适应阈值方法会更好。功能
灌输
万博1manbetx支持使用指定的本地自适应方法
“自适应”
输入选项。不过,使用局部自适应方法,指定前景是比背景亮还是比背景暗非常有帮助。你可以知道
灌输
使用
“前极性”
选项
在这里,它正在发挥作用。
第2页=imbinarize(A,“自适应”,“前极性”,“黑暗”);
imshow(第2页)
您可以看到,现在所有的文本都清晰地包含在生成的二进制图像中。
所以,下次你去拿东西的时候
im2bw
和
灰谷
,尝试使用
灌输
相反
|
评论
如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。