다음과 같은 배열이 있을 때 이를 중앙값 필터링하면
f(x,y) = { 1, 2, 4, 5, 2,
3, 6, 6, 9, 0,
1, 8, 3, 7, 2,
2, 9, 8, 9, 9,
3, 9, 8, 8, 7 }
arr = [
[1,2,4,3,6,6,1,8,3],
[2,4,5,6,6,9,8,3,7],
[4,5,2,6,9,0,3,7,2],
[3,6,6,1,8,3,2,9,8],
[6,6,9,8,3,7,9,8,9],
[6,9,0,3,7,2,8,9,9],
[1,8,3,2,9,8,3,9,8],
[8,3,7,9,8,9,9,8,8],
[3,7,2,8,9,9,8,8,7]
]
for i in range(len(arr)):
result = sorted(arr[i])
print(result, result[3])
[1, 1, 2, 3, 3, 4, 6, 6, 8] 3
[2, 3, 4, 5, 6, 6, 7, 8, 9] 5
[0, 2, 2, 3, 4, 5, 6, 7, 9] 3
[1, 2, 3, 3, 6, 6, 8, 8, 9] 3
[3, 6, 6, 7, 8, 8, 9, 9, 9] 7
[0, 2, 3, 6, 7, 8, 9, 9, 9] 6
[1, 2, 3, 3, 8, 8, 8, 9, 9] 3
[3, 7, 8, 8, 8, 8, 9, 9, 9] 8
[2, 3, 7, 7, 8, 8, 8, 9, 9] 7
이런 결과가 나온다. 리스트는 3x3 마스크를 씌워 정렬하였고 중앙값을 구하려면 가운데 값을 끄집어 내면 된다.
최종 결과는
{3, 5, 3,
3, 7, 6,
3, 8, 7}이 아니고
{ 1, 2, 4, 5, 2,
3, 3, 5, 3, 0,
1, 3, 7, 6, 2,
2, 3, 8, 7, 9,
3, 9, 8, 8, 7 } 이다. 가운데 3x3 만 변화가 있다.
'과목 > 영상처리' 카테고리의 다른 글
Low Pass Filter 저주파 통과 필터 (0) | 2018.04.19 |
---|---|
Gaussian Filter 단순 계산을 파이썬으로 (0) | 2018.04.19 |
Mean Filter 단순 계산을 파이썬으로 (0) | 2018.04.18 |