영상의 밝기 조절

화소 처리(Point Processing)

    입력 영상의 특정 좌표 식셀 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산

dst(x,y) = F(src(x,y))
여기서 F는 변환 함수(transfer function)로써 다양한 연산을 함축한다.

    결과 영상의 픽셀 값이 정해진 범위에 있어야 한다. (ex. 0-255)

    반전, 밝기 조절, 명암비 조절 등이 이에 해당된다.

 

밝기 조절

    영상을 전체적으로 더욱 밝거나 어둡게 만드는 연산

밝기 조절 예시 (출처: FastCampus)

    밝기 조절을 하기 위한 수식은 다음과 같다. 기존 픽셀 값에 밝기 값을 더해주고 일정 값 (ex. 0 or 255)를 넘어가면 포화(saturate)로 인해 일정 값으로 막히게 된다.

dst(x,y) = saturate(src(x,y) + n)
밝기 연산 이해도 (출처: FastCampus)

    cv2.add(src1, src2, dst, mask, dtype) -> dst : OpenCV에서 제공하는 밝기 조절을 위한 영상 덧셈 연산 함수

     src1는 첫 번째 영상/스칼라(Scalar). src2는 두 번째 영상/스칼라. dst는 덧셈 연산의 결과 영상. mask는 마스크 영상. dtype은 출력 영상의 타입으로 자료형 예시는 여기 참고!

 

패스트캠퍼스 챌린지 07일차 - Ch2. OpenCV-Python 기초 사용법

2-1. 영상의 속성과 픽셀 값 참조 OpenCV 영상 데이터 자료형 OpenCV의 경우 영상 데이터를 imread() 함수로 불러올 경우 numpy.ndarray 자료형으로 읽어오게 된다. numpy.ndarray 속성:  1) ndim: 차원 수. len(..

rec-poly.tistory.com

     * Scalar: 실수 값 하나 또는 네 개로 구성된 튜플

     * dst를 함수 인자로 전달하는 경우 src1, src2와 크기가 동일 해야하며, 데이터 타입이 적절해야한다.

     * 영상에 + 연산을 사용하는 것이 아닌 add 함수를 사용해주는 이유는 영상을 읽어오는 때 데이터 타입에 따라 overflow가 일어나고 255를 넘어가게 되면서 다시 0부터 시작해 남은 수가 더해지기 때문에 생각한 밝기 조절 출력 연산이 안나온다. numpy의 clip 함수와 실수 + 연산, 데이터 타입 변형을 통해 생각한 밝기 연산을 할 수 있다.

     * 컬러 영상의 경우 모든 컬러 차원에 같은 값을 더해주어야 한다. 

    강의 예제에서는 영상 처리에서 가장 유명한 lenna.bmp 파일을 이용한 예제를 보여주셨는데 나는 아래 있는 인증 사진을 이용해서 함수를 테스트 해보았다. 밝기 + 200의 경우 너무 높게 줬는지 그레이스케일이나 컬러 영상이나 동일하게 출력되어버렸다.

그레이스케일 영상 밝기 조절. 왼쪽이 원본, 중앙이 밝기 +100, 오른쪽이 밝기 +200 된 영상이다.
컬러 영상 밝기 조절. 왼쪽이 원본, 중앙이 밝기 +100, 오른쪽이 밝기 +200 된 영상이다.


인증 타임

    컴퓨터 화면이 포함된 사진의 밝기를 올리니 그대로 눈이 부신 사진이 나와버리는걸 보고 좀 신기해했다. 원래 카메라를 사용해 사진을 찍을 때도 밝기를 올리면 저렇게 나오는 편이라 영상 처리에 대한 신기함이 배가 된 느낌이다. 그리고 이제 와서 보니 밝기 테스트에 - 값을 줘서 출력을 보지 못했다. 개인적인 시간에 - 값을 줘도 동작을 하는지 한 번 테스트 해보아야 겠다. 

3-1. 공부 인증 사진

 


#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online

 

패스트캠퍼스(FastCampus) 강의 둘러보러 가기 

   

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.


 

+ Recent posts