2016-07-17 7 views
0

入力から正方形の領域を取得し、平均化フィルタを適用する必要があります。 はこれを試みたが、エラーが発生しますがあります:MATLAB:平均化フィルタをRGB画像の四角い領域にどのように適用しますか?

I=imread('img1.jpg'); 
h=fspecial('average'); 
figure; 
h_img = imshow(I); 
sq=imrect(); 
mask = createMask(sq,h_img); 
I2 = roifilt2(h,I,mask); 

最後の行はエラーになります。

+0

を私はMatalbにコードをコピーし、それが働いています。エラーメッセージとは何ですか? – Rotem

+0

私はカラーRGB画像のためにこれが必要です。 – AZ009

答えて

0

私は問題を知っていると思います。
おそらく、フィルタをRGBイメージに適用しようとしています。

は、次のコードサンプルを確認してください:

I = imread('peppers.png'); 
h = fspecial('average', 10); 
figure; 
h_img = imshow(I); 
sq=imrect(); 
mask = createMask(sq,h_img); 

if (ndims(I) == 3) 
    classI = class(I); 

    if (isequal(classI, 'uint8')) 
     I = double(I)/255; %Convert I to double before applying filter. 
    end 

    I2 = zeros(size(I)); 
    I2(:,:,1) = roifilt2(h,I(:,:,1), mask); %Filter Red plain 
    I2(:,:,2) = roifilt2(h,I(:,:,2), mask); %Filter Green plain 
    I2(:,:,3) = roifilt2(h,I(:,:,3) ,mask); %Filter Blue plain 

    if (isequal(classI, 'uint8')) 
     I2 = uint8(round(double(I2)*255)); %Convert I2 to uint8 after applying filter. 
    end  
end 

figure;imshow(I2); 

は、地域を選択:
enter image description here

フィルタ結果:
enter image description here

関連する問題