나는 이미징 처리에 초보자이며 이미지 스무딩을 구현하는 데 어려움을 발견했습니다.matlab image smoothing with conv2
기본적으로 이미지 A가 있고 모든 픽셀을 현지 평균으로 바꾸고 싶습니다. 그래서 마스크 M1 = 1을 정의하고 사용하십시오.
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
대단히 감사합니다.
그래서 의미없는 픽셀로 무엇을하고 싶습니까? 그것들을 평균으로 바꾸고 싶지만 평균에 포함시키지 않으시겠습니까? 당신은 그들을 그대로 검은 색으로 바꾸고 싶습니까? – Ali
노이즈 픽셀의 값은 신경 쓰지 않습니다. 결국 0으로 설정할 수 있습니다. 평균에서 그들을 제외하면 내가 원하는 것입니다. – nos
그래, 내 대답을 업데이 트, 잘하면이 도움이, – Ali