たとえば、領域にノイズが含まれているサイズ 180x220 の画像があります (145:180,1:65)。
私の質問は、Matlab を使用して画像の他の部分に影響を与えることなく、この領域のノイズを除去する方法です。
どうもありがとうございました。
編集:次の画像から領域 (1:146,1:25) および (1:15,25,174) のノイズを除去したい:
一般に、これは次のようになります
% filter image in-place
img(145:180, 1:65) = medfilt2(img(145:180, 1:65));
ほとんどのフィルターでは、適切な補間/平均化などを行うために、関心領域のコンテキストが必要になることに注意してください。したがって、次のアプローチを使用することをお勧めします。
% Note: increase ROI by 10 on each side
offset = 10;
img_tmp = img(145-offset : 180+offset, 1 : 65+offset);
% apply filter
img_tmp = medfilt2(img_tmp, [additional parameters]);
% put filtered image back in its proper place
img(145:180, 1:65) = img_tmp(offset:end-offset+1, 1:end-offset+1);
img = double(imread('img.jpg'));
h = fspecial('gaussian', hsize, sigma); % decide how to filter the image
img_filt = imfilter(img, h, 'replicate');
ここで、ノイズ領域でのみフィルタリングされた画像を使用します
img(145:180,1:65,:) = img_filt(145:180,1:65,:);
編集:画像を投稿した後、ノイズ領域を単純にバニラ色に置き換えたいと思いますか? その場合は、次の手順を実行します (灰色のイメージを想定)。
med_pixel = median(img(:)); % detect the dominant color
img(1:146,1:25) = med_pixel;
img(1:15,25,174) = med_pixel;
... 等々