RGB 画像マトリックスがあり、それにいくつかの空間フィルターを適用したいとします。一般に、要素ごとの操作を適用したいと考えています (これは大学の課題であり、画像処理ツールボックスで利用可能な組み込み関数を使用することは許可されていないことに注意してください)。フィルターを関数として記述し、bsxfun
これらの関数を画像に適用することにしました。
簡単な例は次のとおり
です。画像のすべてのグレー レベルに 50 を追加し、200 を超えるすべてのグレー レベルを 200 に置き換えたいとします。これが私のコードです。
a='C:\Users\sepideh\Desktop\IP_abadpour\S45C-113050518040.jpg';
b=imread(a);
b(:,:,1)=b(:,:,1)+50;
b(:,:,2)=b(:,:,2)+50;
b(:,:,3)=b(:,:,3)+50;
c=reshape(b,[],1);
d=bsxfun(@test,c,200);
test
は次の形式の関数です。
function Out = test(in,a)
if in>a
in=200;
end
Out = in;
end
このコードは機能しません。2 行目の "in > a" は 0 と 1 を含む行列 (すべての要素が 1 ではなく、1 であってはならないことを意味します) であるため、デバッガーはif
ステートメントに分岐しません。
この関数の書き方と、パフォーマンスや実行速度に影響を与えずに空間解析とフーリエ解析を画像に適用する方法を教えてもらえますか?