私は画像処理の初心者であり、画像の平滑化を実装する際にいくつかの問題を発見しました。
基本的に、画像 A があり、すべてのピクセルをその局所平均に置き換えたいと考えています。したがって、マスク M1 = ones(10) を定義して使用します
newImage = conv2(A, M1,'same')
それは正常に動作します。しかし、画像Aには、ノイズのために完全に無意味なピクセルがあり、それらを平均化に含めたくありません。意味のあるピクセルが別のマスク M2 を介して定義されているとしたら、どうすればよいでしょうか?
画像に単純なループを作成しました。動作しますが、conv2() よりもかなり遅いです。
for i = 1:self.row
for j = 1:self.col
if self.M2(i,j) % only treat meaningful pixels
A(i,j) = self.createAvgPhasor(i,j);
end
end
end
function [s_avg]=createAvgPhasor(self,m,n)
% bound box along x
if m > self.rB
xl = m - self.rB;
else
xl = 1;
end
if m < self.row_rB
xu = m + self.rB;
else
xu = self.row;
end
% bound box along y
if n > self.rB
yl = n - self.rB;
else
yl = 1;
end
if n < self.col_rB
yu = n + self.rB;
else
yu = self.col;
end
M1 = false(self.row,self.col);
M1(xl:xu,yl:yu) = true;
msk = M1 & self.M2;
s_avg = mean(self.Phi(msk));
end
どうもありがとうございました。