MATLAB Answers

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

조회 수: 1(최근 30일)
Demet Bayraktar
Demet Bayraktar 2021년 7월 27일
댓글: Demet Bayraktar 2021년 7월 27일
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
Rik
Rik 2021년 7월 27일
Why do you want to replace the efficient convolution with a nested loop?

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

채택된 답변

Chunru
Chunru 2021년 7월 27일
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)
  댓글 수: 1
Demet Bayraktar
Demet Bayraktar 2021년 7월 27일
it worked perfectly when i use different image. thank you for your help

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

추가 답변(0개)

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by