У меня возникла проблема, так как я новичок в анализе изображений и инструменте 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
Эти коды должны быть увеличьте это изображение:
однако, в какой-то момент он не работает должным образом s.t:
Если вы помочь мне исправить мой код, я бы appriciated. Если вы хотите узнать о расширении, вы можете следовать этому URL: http://www.mathworks.com/help/toolbox/images/f18-12508.html
Matlab имеет эту функцию в своей библиотеке, но мне нужно реализовать мою собственную функцию.
хорошая точка, но матрица s - это [3,3] размерная матрица. –
Смотрите новое редактирование, удачи. – Maurits
:) Кажется логичным. Что я должен сделать, чтобы решить эту проблему? –