gpt4 book ai didi

matlab - 为什么我的二值图像膨胀函数不能正常工作?

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

我遇到了一些麻烦,因为我是新概念图像分析和工具 Matlab。我的想法并不像代码行那样有效。

我正在尝试对二值图像使用膨胀函数。它必须加宽给定的二值图像。

这是我的主页:

I = imread('logo_XXXX.png');
binaryImage = im2bw(I, 0.4);
s = ones(3,3,'int8');
i = dilate(binaryImage,s);
figure, imshow(i);

这是 dilate.m 函数:

function [i] = dilate(I,s)
[Irows,Icols] = size(I);
i=I;
Itemp = I;
for row=1:Irows
for col=1:Icols
x = intersectAt(Itemp,s,row,col);
if x == 1
i(row,col)=1;
else
i(row,col)=0;
end
end
end

这是 istersectAt.m 函数:

function [i] = intersectAt(I,s,row,col)
[Srows,Scols] = size(s);
[Irows,Icols] = size(I);
i=0;
rowx = row - int8(Srows/2);
colx = col - int8(Scols/2);

for r=1:Srows
for c=1:Scols
if rowx+r <= 0 || rowx+r > Irows || colx+c <= 0 || colx+c > Icols
continue;
elseif I(rowx+r,colx+c) == 1 && s(r,c)==1
i = 1;
end
end
end

这些代码必须加宽这张图片:

enter image description here

然而,在某些时候它不能正常工作 s.t:

enter image description here

如果您帮助我修复我的代码,我将不胜感激。如果您想了解膨胀,可以关注此网址:http://www.mathworks.com/help/toolbox/images/f18-12508.html

Matlab 的库中有这个函数,但我需要实现自己的函数。

最佳答案

你应该在 matlab 中尽可能避免循环。

如果您需要编写自己的函数,只需执行以下操作:

s=ones(3);
i=(conv2(double(binaryImage),s,'same')>0)

从你的例子:

enter image description here

我可以获得:

enter image description here

关于matlab - 为什么我的二值图像膨胀函数不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9444310/

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