计算中位数图像的错误


image=imread('Tiger.jpg');
%figure,imshow(uint8(image)),title('Before applying Median Filter');

[rows, cols]=size(image);
B=zeros(rows, cols);
for rowNo=2:rows-1
    for colNo=2:cols-1
         K=image(rowNo-1:rowNo+1,colNo-1:colNo+1);
    B(rows,cols)=median(K);
   end
end

figure,imshow(uint8(B)),title('After applying Median Filter');

我想在不使用内置功能的情况下计算图像的中位数,但我给了我错误,可以有人帮助我吗误差

??? Subscripted assignment dimension mismatch.
Error in ==> Quest_2median at 18
    B(rows,cols)=median(K);

下面的代码是一个更好的实现:

image=imread('../SampleImages/cat.jpg');
%figure,imshow(uint8(image)),title('Before applying Median Filter');
image = rgb2gray(image);
image = imnoise(image,'salt & pepper');
[rows, cols]=size(image);
B=zeros(rows, cols);
for rowNo=2:rows-1
    for colNo=2:cols-1
        K=image(rowNo-1:rowNo+1,colNo-1:colNo+1);
K = reshape (K,1,9);
B(rowNo,colNo)=median(K);
    end
end
figure,imshow(uint8(image)),title('Before applying Median Filter');
figure,imshow(uint8(B)),title('After applying Median Filter');

注意是中值函数接受一个向量,当你传递一个矩阵时,它给出一个包含每列中值的行向量

最新更新