Matlab画像処理「平均化フィルタ」
2本目です。
画像の平均化フィルタをMatlab内で関数化したので投稿します。
levelに奇数を入れると、その数分の周囲のピクセル正方形から平均を取ります。
例) level = 3
1 1 1
2 2 3
3 4 4
平均化フィルタ処理後、中央画素は9ピクセルの平均値2.33になります。
下記のコードでは、周囲のピクセルが存在しない端にはフィルタ処理されないのでご注意ください。
level=7で平均化された猫チャンが右です。(よく見ると周囲のピクセルが明瞭なまま)
%%%読み込み%%%
test = imread("C:\hogehoge\test.jpg");
%%%処理%%%
test2 = AVEfilter(test,5);
%%%出力%%%
subplot(1,2,1)
imshow(test)
subplot(1,2,2)
imshow(test2)
imwrite(test2,"C:\hogehoge\test2.jpg")
%%%ここから下コピペ%%%
function [pic2] = AVEfilter(pic1,level)
sz1 = size(pic1,1);
sz2 = size(pic1,2);
sz3 = size(pic1,3);
lv = (level-1)/2;
pic2 = zeros(sz1,sz2,sz3);
for k = 1:sz3
for j=1+lv:sz2-lv
for i = 1+lv:sz1-lv
kernel = pic1(i-lv:i+lv,j-lv:j+lv,k);
pic2(i,j,k)=mean(kernel,'all');
end
end
end
pic2=pic2/255;
end
いや、Pythonでよくね…?
参考 西住工房様【Python/OpenCV】平均値フィルタでぼかし・平滑化
https://algorithm.joho.info/programming/python/opencv-averaging-filter-py/
Author And Source
この問題について(Matlab画像処理「平均化フィルタ」), 我々は、より多くの情報をここで見つけました https://qiita.com/NagayamaT/items/b28332ef71dadbb6487f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .