https://www.booksr.co.kr/product/opencv-python%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%98%81%EC%83%81%EC%B2%98%EB%A6%AC-%EB%B0%8F-%EC%9D%91%EC%9A%A9/
OpenCV-Python으로 배우는 영상처리 및 응용 | 생능출판사
셜 맥루한이 1962년 처음으로 사용한 ‘글로벌 빌리지(global village)’는 세상이 인터넷과 같은 정보통신 기술에 의해 전 세계가 하나의 마을처럼 된다고 했습니다. 2020년은 그런 의미를 넘어서, 코
www.booksr.co.kr
화소의 표현
영상 처리는 2차원 데이터에 대한 행렬 연산이다. OpenCV API는 넘파이 객체를 기반으로 데이터 처리를 진행한다. OpenCV에서 지원함수가 일반적 접근 속도보다 대부분 경우에서 훨씬 빠르다.
영상의 밝기를 밝게 하거나 어둡게 하는 것은 화소값을 더하고 빼는 과정으로 진행을 할 수 있다.
영상 밝기의 가감 연산
np.clip연산을 통해 cv2.add(image1*alpha, image2*beta)을 진행 했을 때의 넘었을 때 클램핑을 수행할 수 있다. 255보다 크면 255 0보다 작으면 0으로 바꾼다. np.clip(대상이미지, 0, 255).astype('uint8')
영상의 장면전화에서 이 비율들을 활용하는 것이 가능하다.
명암 대비(contrast)
상이한 두가지 밝기가 경계에서 서로 영향을 미쳐 그 차이가 강조되어 나타나는 현상을 말한다. 그 차이가 강조되어 나타나는 것을 말한다. 영상에서 명암대비를 높이려면 곱셈연산을 수행하면 된다. 1.0이상의 연산을 곱하면 차이가 커질 것이고 1.0아래를 곱하면 작아진다. cv2.scaleAdd(image, 0.5, noimage)는 영상의 명암대비를 감소시켜서 리턴할 것이다.
cv2.addWeighted(image, 2.0, noimage, 0, -avg) 평균의 값을 더하거나 빼서 품질의 영향을 줄 수 있게 할 수도 있다.
히스토그램
데이터를 빈도수에 따라서 표현하는 방식이다 . 화소별 빈도를 누적해서 배열에 저장하고, 여기서 구간을 지정해서 하나로 묶어서 시각적으로 빈도를 표현한다.
cv2.calcHist(images, channels, mask, histSize, ranges[,hist[,accumulate]])→ret
행렬 원소값의 빈도를 계산한다.
(원본 배열들, 히스토그램 계산에 사용 차원 목록, 특정영역 계산위한 마스크 행렬, 각 히스토그램 계급의 개수, 히스토그램 범위, 누적플래그로 단일히스토그램 구할 때 사용)
히스토그램 스트레칭
명암도 영상에서 영상이 보기에 선명하고 깨끗해 보이려면 어두운 부분에서 밝은 부분 까지 고루 분포되어 있어야 한다. 그렇치 않고 주로 특정 밝기 부분만 있는 영상은 전체적으로 선명하지 안혹 또렷하지도 않다. 히스토그램이 분포가 달라진다는 것은 영상 내의 화소의 분포가 다양해 진다는 것으로 볼 수도 잇다. 가장 낮은 화소값을 0으로 당기고 가장 높은 화소값을 255로 당기면 화소값들은 (화소값-최소값)/(최대-최소)*255로 새로운 화소를 구하게 하는 것이 가능하다.
히스토그램 평활화
평활화(equalization)은 EQ 혹은 equalizer라고도 쓰인다. 이 평활화는 밝기의 크기 그자체보다 대비에서 인지도가 향상되는 것을 근거로 하여 명암대비를 통해 영상의 화질을 개선할 수 있다. 히스토그램이 좁은 것은 스트레칭을 통해 해결 가능하지만 특정 부분에서만 한쪽으로 치우친 명암 분포를 가진 영상을 히스토그램 재분배 과정을 거쳐서 균등한 히스토그램 분포를 갖게 하는 알고리즘이 평활화 알고리즘이다.
누적 빈도수를 누적합하고 누적합에 대한 최대 화소값을 곱해서 결과값을 구하는 방법을 사용한다. 이렇게 되면 치우친 명암분포의 영상이 균등하게 분포되는 것을 확인 가능하다.
컬러 공간
색 표시계(color system)의 모든 색들을 색공간의 3차원 좌표로 표현한 것이다. 색 표시계는 RGB, CMY, HSV, LAB, YUV등의 색 체계를 말하는 것이다. 컬러공간을 다른 말로 컬러표현 시스템(color representation system), 컬러 모델(color model)로도 표현한다.
RGB는 가산혼합을 진행 가능한 색 조합이다. 대부분이 RGB를 기본 컬러공간으로 활용한다. 그러나 인간의 시각과 인지 체계로 정확한 색상을 규정하는 것이 쉽지 않다. CMY는 출력시 사용하는 감산 혼합 방식의 색공간이다. HSI컬러 공간은 색상 채도 명도 세가지 지각변수로 분류하여 구분한다. 이러한 인간이 색상을 인식하는 3가지 요인인 색상(Hue), 채도(Saturation), 명도(Intensity, Value)라는 3가지 지각변수로 분류된다. 색상은 각도로 표현된다. 0도가 빨강 60이 노랑 120이 초록 180이 청록 240이 파란색 300이 다홍이다 . 채도는 색의 순수한 정도를 말한다. 순수한 색의 비율로 흰색의 혼합 비율에 따라 흰색이 커질수록 작아진다.
'Study(Data Analysis, OpenCV, Python, AI) > OpenCV-Python' 카테고리의 다른 글
| 08.기하학 처리 (0) | 2024.04.30 |
|---|---|
| 07.영역 처리 (0) | 2024.04.29 |
| 5. 기본 배열 연산(Operation)함수 (0) | 2024.04.28 |
| 4. OpenCV 인터페이스 기초/사용자 인터페이스 및 I/0 처 (0) | 2024.04.21 |
| 2,3. OpenCV와 Python (0) | 2024.04.18 |