I created a code which does filtering with convulution but it gives an error

A = imread('lena.jpg');
F = uint8([-1 -1 -1;0 0 0;1 1 1]);
B = uint8(padarray(A,[1 1]));
Output = uint8(zeros(size(A)));
for i = 1:size(B,1)-2
for j = 1:size(B,2)-2
X = B(i:i+2,j:j+2).*F;
Output(i,j) = sum(X(:));
end
end
imshow(Output)
but it doesn't work correctly. What is my mistake?

댓글 수: 1

Why do you want to replace the efficient convolution with a nested loop?

댓글을 달려면 로그인하십시오.

 채택된 답변

The image has 3 channels and is a 3D array. You need to loop over the 3rd dimension as well. Use a different image below.
A = imread('onion.png');
F = uint8([-1 -1 -1;0 0 0;1 1 1]);
B = uint8(padarray(A,[1 1]));
Output = uint8(zeros(size(A)));
for k=1:size(B,3)
for i = 1:size(B,1)-2
for j = 1:size(B,2)-2
X = B(i:i+2,j:j+2, k).*F;
Output(i,j, k) = sum(X(:));
end
end
end
subplot(121)
imshow(A)
subplot(122)
imshow(Output)

추가 답변 (0개)

제품

릴리스

R2021a

질문:

2021년 7월 27일

댓글:

2021년 7월 27일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by