4.3.2 적응성 공간 필터들 4.3.2 적응성 공간 필터들
– 앞 절 필터들 ~ 위치에 따라 영상 특성이 어떻게 변하는가에 무관
= 필터링되는 영역의 특성에 필터의 작용을
적응 시킬 수 있는 필터를 사용해서 결과를
개선 … .
• 이 절에서는 적응성 중간값 필터를 고려
• Algorithm 설명: Gonzalez와 Woods[2008]
(§4.3.3)
• Let:
– z
min, z
max, z
med: Sxy의 최소, 최대, 중간 밝기 값 z
xy: 좌표 (x, y)에서의 밝기 값
– S
max: 적응성 필터 윈도우의 최대 허용 크기 (홀 수)
• 두 레벨로 작용:
레벨 A: If zmin
< z
med< z
max, go to level B Else increase the window sizeIf window size Smax, repeat level A Else output zmed (or zxy).
Idea: min < med <
max이 아니면, 노이즈 가능성 창을 더 키움
zmin < zmed < zmax
zmin < zxy < zmax
N(zmed extreme zxy = extreme)
zxy
zmed k=3
Y(zmed extreme)
N k += 2
k<=Smax
Y(zxy extreme)
• Three main purposes:
1. To remove S&P (impulse – why?) noise 2. To provide smoothing of other noise (not
impulsive)
3. To reduce distortion (∍ excessive thinning or
thickening of object boundaries)
• Level A의 목적:
– 중간값 필터 출력 zmed가 임펄스(black or white 또는 extreme 값)인지 아닌지를 결정
– 만일 zmin < zmed < zmax이면, zmed ~= 임펄스
• Level B:
– zxy가 중간 레벨(intermediate-level)인 경우,
그대로 둠으로써 영상 왜곡을 줄임.
• 레벨 A의 마지막 단계의 다른 옵션:
중간값(zmed) 대신에 zxy를 출력
다소
덜 흐려진
결과를 만드나, 후추(소금)노이즈와 같은 값을 갖는 일정한 배경에 섞인 소금(후추) 노이즈를 검출하지 못 할 수 있음.
• 이 알고리듬의 M-함수: adpmedian ( 부록 C) f = adpmedian(g, Smax)
– g: 필터링될 영상
연습 for adpmedian 연습 for adpmedian
>> g = [1 2 3; 4 5 6; 7 8 9;
10 11 12];
>> f = g;
>> [M, N] = size(g);
>> f(:) = 0;
>> aP = false(size(g))
→ 4
3
의 논리0
배열>> k = 3;
>> zmin = ordfilt2(g, 1, ones(k, k),
'symmetric')
zmin =
1 1 2 1 1 2 4 4 5 7 7 8
>> zmax = ordfilt2(g, k*k, ones(k, k), 'symmetric') zmax =
5 6 6
8 9 9
11 12 12
11 12 12
>> zmed = medfilt2(g, [k k], 'symmetric')
zmed =
2 3 3 4 5 6 7 8 9 10 10 11
• >> zmed2 = ordfilt2(g, round(k*k/2), ones(k, k), 'symmetric')
>> pULB = (zmed > zmin) &
(zmax > zmed) & ...
~aP
pULB =
1 1 1 1 1 1 1 1 1 1 1 1
>> zB = (g > zmin) & (zmax > g) zB = 0 1 1
1 1 1 1 1 1 1 1 0
zmin =
1 1 2 1 1 2 4 4 5 7 7 8
g =
1 2 3 4 5 6 7 8 9 10 11 12
zmax =
5 6 6
8 9 9
11 12 12
11 12 12
>> oZxy = pULB & zB oZxy =
0 1 1 1 1 1 1 1 1 1 1 0
>> oZmed = pULB & ~zB oZmed =
1 0 0 0 0 0 0 0 0
>> f(oZxy) = g(oZxy) f =
0 2 3 4 5 6 7 8 9 10 11 0
>> f(oZmed) = zmed(oZmed) f =
2 2 3
4 5 6
>> zmed zmed =
2 3 3 4 5 6 7 8 9 10 10 11
>> aP aP =
0 0 0 0 0 0 0 0 0 0 0 0
>> aP = aP | pULB aP =
1 1 1
1 1 1
1 1 1
1 1 1
>> all(aP(:)) ans = 1
>> f f =
2 2 3 4 5 6 7 8 9 10 11 11
>> f(~aP) = zmed(~aP) f =
2 2 3 4 5 6 7 8 9 10 11 11
예제 4.6: 적응성 중간값 필터링 예제 4.6: 적응성 중간값 필터링
• 그림 4.6(a): 소금& 후추 노이즈 낀 회로 기판
>> g = imnoise(f, 'salt & pepper', .25);
• 4.6(b): (medfilt2 - §3.5.2)
>> f1 = medfilt2(g, [7 7], 'symmetric');
– 노이즈가 별로 없으나, 흐려졌고 왜곡(예: 상단 중앙의 코넥터 다리).
– Pa, Pb < 0.2 때 잘 동작 [Gonzalez and Woods, 2008] (? )
>> f = imread('Fig0318(a)(ckt-board-orig).tif');
>> fn1 = imnoise(f,'salt & pepper',0.1);
>> fn1m = medfilt2(fn1,[7 7], 'symmetric');
>> imshow(fn1m);