2013-03-08 5 views
0
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); 
+0

어떤 오류가 발생합니까? 이 오류를 포함하도록 질문을 편집 할 수 있습니까? –

+0

나는 내 질문을 편집 – Rocket

+0

당신의 실수는'median'이 벡터를 만들지 만 (스칼라가 필요함),'median' 전에'K'를 벡터로 변환한다는 것입니다 :'B (rows, cols) = median (reshape (K, 1,9));,하지만 더 나은 사용 medfilt2 –

답변

0

이 더 나은 구현 오류 밖으로 저를 도와주세요 수 있습니다 :

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'); 

메모 함수는 벡터를 취하고 행렬을 전달하면 각 열의 중앙값을 포함하는 행 벡터가 제공됩니다.