The output of the function is unrecognized in the function
1 次查看(过去 30 天)
显示 更早的评论
Write a function to "smooth" a black and white image by replacing each pixel by the average of itself and its neighbors. In MATLAB a black and white image is just a matrix of 1s and 0s - 1 represents white, and 0 represents black. To keep the algorithm simple, ignore the edges of the image - that is, do not change the first and last rows and columns.
function name = smooth_image
input argument = input matrix
output argument = output matrix
the algorithm can be described as follows:
- Given a NxM input matrix
- Make a copy of the matrix - this will be the output matrix
- loop over rows 2 to N-1 on the input matrix
- loop over columns 2 to M-1 of the input matrix
- take the average of the 3x3 submatrix centered on the current row & column
- set the corresponding element of the output matri equal to this average
This is what I have so far: (but it keeps returning "unrecognized function or variable 'output'. Error in smooth_image (line 2). input = output;
function output = smooth_image(input)
input = output;
N = length(input(1,:));
M = length(input(:,1));
for i = 2:N-1
for j = 2:M-1
A = input(i,j);
A = mean(i-1:i+1,j-1:j+1);
output = A(i,j);
end
end
end
2 个评论
Walter Roberson
2020-2-8
Notice that every iteration you are overwriting ALL of A with a scalar value.
回答(1 个)
Bhargavi Maganuru
2020-2-11
Error is because of assigning output of the function to a variable in the 1st line itself. Notice that you’re calculating the mean to the indices and not to the submatrix in the loop.
You can use following code
function output = smooth_image(input)
output = input;
N = length(input(1,:));
M = length(input(:,1));
for i = 2:N-1
for j = 2:M-1
A = mean2(input(i-1:i+1,j-1:j+1));
output(i,j) = A;
end
end
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!