2014-11-12 4 views
1

상자 평균 필터를 사용하여 이미지를 축소해야하지만이 코드를 작성하려고했지만 오류가 발생했습니다 : Unknown command option., 오류는 어디에 있으며 올바른 알고리즘은 무엇입니까? 상자 필터 나는 그것의 아이디어를 알고, 새로운 픽셀 = 네 인접한 픽셀을 평균. 코드 :박스 평균 평균 이미지 필터를 matlab을 사용하여

clear, clc 

image=imread('p128.jpg'); 
old_size=size(image); 
out_image=zeros(old_size(1)/2 , old_size(2)/2); 

for i = 1 : old_size(1) - 1 
    for j= 1 : old_size(2) - 1 
     for k= i : i+1 
      for t= j : j+1 
       out_image(k,t)=(image(i,j)+image(i+1,j)+image(i,j+1)+... 
        image(i+1,j+1))/4 ; 
      end 
     end 
    end 
end 

figure(1), imshow(out_image) 
+0

하는 라인에 해당 오류가 있습니까? Matlab은 일반적으로 어떤 라인이 에러를 발생시키는 지 알려주고, 이것은 디버그를위한 시작점입니다. –

답변

0

당신은 컬럼에 창 요소를 재 배열하고 각 윈도우의 평균을 나타내는 것입니다 각 컬럼의 평균을 계산하는 이미지 처리 도구 상자에서 im2cols with 'distinct' 사용할 수 있습니다. 이제는 IP 툴박스의 기능을 사용하고 싶지 않다는 의견이 있으니 im2cols을 우리 자신의 맞춤형 구현으로 바꿨습니다. 따라서, 입력 그레이 스케일 이미지 데이터로 im 가정, 당신이 사용할 수 있습니다 -

box_len = 2; %// length of the box 
im_cols = im2col_distinct(im,[box_len box_len]); 
im_downsized = uint8(reshape(mean(im_cols,1),size(im,1)/box_len,[])); 

관련 기능 -

function out = im2col_distinct(A,blocksize) 

nrows = blocksize(1); 
ncols = blocksize(2); 
nele = nrows*ncols; 

row_ext = mod(size(A,1),nrows); 
col_ext = mod(size(A,2),ncols); 

padrowlen = (row_ext~=0)*(nrows - row_ext); 
padcollen = (col_ext~=0)*(ncols - col_ext); 

A1 = zeros(size(A,1)+padrowlen,size(A,2)+padcollen); 
A1(1:size(A,1),1:size(A,2)) = A; 

t1 = reshape(A1,nrows,size(A1,1)/nrows,[]); 
t2 = reshape(permute(t1,[1 3 2]),size(t1,1)*size(t1,3),[]); 
t3 = permute(reshape(t2,nele,size(t2,1)/nele,[]),[1 3 2]); 
out = reshape(t3,nele,[]); 

return; 

을 따라서, 당신은 당신의 원본 코드와 모든 더러운 중첩 루프를 피하는 것입니다.

입력 :

enter image description here

출력 :

enter image description here

+0

고맙습니다.하지만 정말 im2col과 같은 함수를 사용하고 싶지는 않습니다. 전체 코드가 수학에 기초해야합니다. 내가 필요로합니다. Verilog에서이 코드를 구현하면 im2col로 무엇을해야합니까?! – abdic

+0

@abdallahkamal 그런데, 박스 크기가'4 x 4' 인이 방법을 사용하십시오. 행과 열을 따라 4 배의 비율로 이미지를 축소합니다. 그걸 원하니? – Divakar

+0

@abdallahkamal 코드를 편집하고 축소 요소는'2'입니다. 따라서 '256 x 256'이미지는 '128 x 128'크기로 축소됩니다. 결과가 효과가 있는지 확인하십시오. – Divakar