gpt4 book ai didi

matlab - 扩张 (imdilate) 不会像预期的那样发生 "thicken"或形状变化

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:20 24 4
gpt4 key购买 nike

书中指出,在图像处理中,膨胀用于“加厚”二值图像中的对象。此外,作者在示例中使用了 imdilate 来修复或加粗扫描文档中的损坏文本。 imdilate 填补了扫描质量不佳的文本文档中的空白和裂缝。

因此,在某种程度上,形成的新图像采用结构元素的形状,或者换句话说,即使结构元素的一个像素与图像中的对象重叠,对象的像素也会在图像的方向上扩展结构元素。

因此,为了自己进行测试,我编写了简单的代码来查看其工作原理。我在这张图片上使用了它:

http://imgur.com/ka2wLqK.jpg

这是我写的代码:

logical = imread('edifice.jpg'); 

line = strel('line', 30, 45);
square = strel('square', 30);

%dilate logical with line @ 45 degrees

dial_logical_line = imdilate(logical, line);
figure, imshow(dial_logical_line), title('dial logical line');

%dilate logical with square.

dial_logical_square = imdilate(logical, square);
figure, imshow(dial_logical_square), title('dial logical square');

用线结构元素扩张产生了这个:

http://imgur.com/6Cek30D.jpg

用正方形结构元素进行扩张产生了这个:

http://imgur.com/sUCvyIv.jpg

现在,根据我在上面理解的定义,我期待不同的结果。如果是直线,我希望 watch 在 45 度角处有点模糊,如果是方形结构元素,我希望是黑色正方形。

可以肯定地说,根据我的理解,我不理解我得到的结果。

最佳答案

imdilate 增强明亮区域,因此如果您希望在第二种情况下出现黑色方 block ,您可以尝试 imerode:

file='http://imgur.com/ka2wLqK.jpg';
logical = rgb2gray(imread(file));
square = strel('square', 30);
dial_logical_square = imerode(logical, square);
figure, imshow(dial_logical_square), title('dial logical square');

明亮区域被消除,黑色区域扩大:

enter image description here

关于您的第一个案例,我还在尝试了解您期望的结果是什么? imdilate 为您加厚 45 度角的所有明亮区域看起来不错。实际上,imerodeimdilate经常结合起来实现一些效果。您可以保持 45 度线和足够粗的线条明亮,并通过腐 eclipse (去除小的亮线)然后扩大(增强粗的亮线)图像来消除其他线条(变成黑色)。 imopen 为您执行此操作:

file='http://imgur.com/ka2wLqK.jpg';
logical = rgb2gray(imread(file));
imshow(logical)
line = strel('line', 10, 45);
dial_logical_line = imopen(logical, line);
figure, imshow(dial_logical_line), title('dial logical line');

enter image description here

关于matlab - 扩张 (imdilate) 不会像预期的那样发生 "thicken"或形状变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20923446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com