1~5절 - 대조비 강화 혹은 약화처리
6~7절 - 선명성 향상
8~9절 - 잡음 제거
# 감마변환
output = input의 감마승 (이때 input은 0~1사이로 정규화)
감마r <1 : 밝게 처리, 어두운 부분은 밝게
감마r >1 : 어둡게 처리, 어두운 부분은 어둡게
# LUT(look up table) 함수 연산의 단순화 방법
출력값 테이블 생성하고 처리하는 방법
# 시그모이드 변환
명암의 대조비 강화
m:중간값, w: 강화강도, E: 기울기정도 (대비와 비례)
분모가 0이 될 가능성이 있기에 1이라는 엡실론을 설정.
m은 최소 0.5로 설정
w는 0위로 설정
# 히스토그램과 히스토그램 스트레칭 **중요**
# 히스토그램이란
화소 값들 개별 누적 개수
히스토그램 방법 1) ** 중요 많이 쓰임 **
np.historgram()함수 이용. ndarray로 선언된 2차워 데이터를 입력받아서 히스토그램 데이터 반환
히스토그램 방법 2)
matplotlib.pyplot.hist 이용
- 1차원 배열이 입력이므로 ravel() 혹은 flatten() 사용해서 1차원 flattened array로 변환
- 일렬로 나열해야만 하는 불편함
- 그림 안그릴 수가 없다, 높이 정규화 안된다.
히스토그램 방법 3)
cv.calcHist() 사용
영상 한번에 구할 수 있다.
# 히스토그램 스트레칭
- 영상의 대조비를 강화하기 위한 수단. 히스토그램 양쪽 잡아당기는 작업.
-- imadjust 함수를 교수님이 직접 만드시고 실습하셨음 (감마값에따라 이미지 밝아지는 현상 관찰)
# 히스토그램 평활화
영상의 계조 분포를 고르게 하는 작업
**중요**
히스토그램 평활화를 행하면 영상의 가시성이 향상되는 효과를 기대할 수 있으나 대신 영상의 그라데이션(gradation)이 부족해지는 부작용이 생길 수 있다. (중간중간 빈 화소가 그라데이션 부족한 곳)
# 히스토그램 평활화의 처리 절차
1단계 : 히스토그램 (계조치 분포함수)를 구한다.
2단계 : 누적분포함수 = 단조 증가함수
3단계 : 누적 분포함수의 값을 제일 큰 값을 나누어 주어 정규화 누적분포함수를 구한다.
4단계 : 정규화 누적 분포함수에 255를 곱해 반올림한 매핑함수를 만든다.
# 히스토그램 평활화 함수
방법 1) cv2.equalizeHist()로 평활화된 영상 반환받기
방법2) np.histogram()로 데이터 DF반환받아서 plt.hist()로 그림그리기
# HE 알고리즘 = 컬러영상에 히스토그램 함수 적용하기
1) np.histogram()를 이용해 히스토그램(DF: Distribution Function)을 구
한다.
2) 연산을 통해 CDF(Cumulative DF)를 구하고,
3) 총 화소수로 나누어 NCDF(Normalized CDF)를 구하고,
4) 여기에 255를 구하여 mapping LUT 어레이를 구한다.
NCDF = 매핑함수 = LUT
<칼라영상 히스토그램 만드는방법 간략하게 >
-> 모노로 만들어 HE용 LUT를 만들어 이를 RGB 각각에 3번 적용하면된다 .
(LUT안 3채널 영상을 넣으면 된다)
# 잘못된 방법
RGB각각을 평균화 시키는 방법은 절대 안됨 **
RGB가 따로 움직이므로 색깔이 튀어버린다. (잘못된 방법)
# 히스토그램 평활화의 단점
- 히스토그램 스파이크로 인해서 그라데이션 부족현상이 나타난다
- 간혹 영상의 품질이 저하된다.
# 히스토그램 스파이크의 원인
영상에 분포가 큰 화소가 존재할 경우
# 히스토그램 스파이크, 히스토그램 평활화의 단점 극복하기
Bi-Histogram Equalization (BBHE) :
입력 히스토그램을 평균값에 따라 나누어 각 부분에 대해 평활화 적용
# 히스토그램 명세화
= 내가 정해준 분포로 입력이미지의 사양을 정해주겠다.
명세화 안에 평활화. 평활화는 명세화의 특별한 경우
# 샤프닝 마스크
- 영상의 샤프니스 증폭해 영상의 선명도 개선. sharpness = 선명도
- 경계면의 대조비를 강화시켜 영상이 선명해진다
- 샤프닝 커널을 사용한 코릴레이션 작업으로 구현할 수 있다.
# 샤프닝 마스크 설계
원본커널에서 2차 미분 커널을 빼서 만든다 (2차미분은 라플라시안을 이용)
# 언샤프 마스킹
시그마를 활용해 블러링 해서 고주파 특성 제어
- (c)언샤프마스크 구하기 - 오리지널 마스크에서 블러링 마스크 빼기
- (d)그런 다음 마스크를 원영상에 더한다. d에서 볼 수 있듯이 대비가 강조됐다.
img = img/255
blur=cv.GaussianBlur(src=img, ksize=(21,21),
sigmaX=3, borderType=cv.BORDER_REPLICATE )
UnsharpMaskImg = img - blur # 고주파 영상
# 메디언 필터링
- 주변 값들을 참조해서 중간값이라고 추정되면 중간값으로 변경 --> 노이즈 제거 좋음
# 메디언 필터가 가우시안 잡음처리에 효과적이지 못하고 s&p잡음처리에 대해 효과적인 이유는?
'전공 과목 이수2👨💻 > 디지털영상처리' 카테고리의 다른 글
객체 트랙킹 (0) | 2021.12.15 |
---|---|
다양한 영상처리 기법을 트랙바로 조절해보기 (0) | 2021.11.05 |
밝기를 트랙바로 조절해보기 (0) | 2021.10.27 |
엣지검출 pyplot.imshow vs cv.imshow (0) | 2021.10.10 |
이미지 가로, 세로 평균필터링 적용 (0) | 2021.10.03 |
matplotlib 출력위한 코드 (0) | 2021.10.03 |