728x90
적응 평균 임계치 이진화에 대한 내용은
opencv document와 다음 링크를 참고했다.
homepages.inf.ed.ac.uk/rbf/HIPR2/adpthrsh.htm
opencv-python.readthedocs.io/en/latest/doc/09.imageThresholding/imageThresholding.html
이전에 단순 이진화의 경우 본인이 지정한 밝기 값을 기준으로 이진화를 수행하였다.
평균 기반 적응적 임계치 이진화 같은 경우 본인이 임계치를 지정하는 것이 아니라
해당 픽셀을 중심으로 블록 사이즈 만큼의 커널(마스크) 영역의 밝기 평균을 지역 임계치로 사용한다.
해당 픽셀 밝기와 지역 임계치를 비교하여 255를 줄지 0을 줄지 판단한다.
다음 함수는 구현내용
def adaptiveThresholdMean(img, block_size=5, C=4):
if type(img) is not np.ndarray:
raise AssertionError("img is not ndarray")
row, col = img.shape
res = np.zeros((row, col))
if (block_size % 2 == 0):
block_size += 1
for i in range(0, row):
for j in range(0, col):
x_min = j-block_size//2
x_max = j+block_size//2
y_min = i-block_size//2
y_max = i+block_size//2
if x_min <= 0:
x_min = 0
if x_max >= col:
x_max = col
if y_min <= 0:
y_min = 0
if y_max >= row:
y_max = row
val = img[y_min:y_max, x_min:x_max].mean()
local_th = val-C
if img[i,j] >= local_th:
res[i, j] = 255
else:
res[i, j] = 0
return res
다음 예시는 아래의 링크에서 소개하는 설정대로 해보았다.
homepages.inf.ed.ac.uk/rbf/HIPR2/adpthrsh.htm
dave.jpg는 opencv 다큐먼트꺼
300x250
'로봇 > 영상' 카테고리의 다른 글
컴퓨터 비전 알고리즘 구현 - 6. 평균 스무딩 (0) | 2020.11.30 |
---|---|
컴퓨터 비전 알고리즘 구현 - 5. 오츠 이진화 (0) | 2020.11.27 |
컴퓨터 비전 알고리즘 구현 - 3. 단순 이진화 (0) | 2020.11.26 |
컴퓨터 비전 알고리즘 구현 - 2. 이미지 히스토그램 (0) | 2020.11.26 |
컴퓨터 비전의 목표 (0) | 2020.08.16 |