본문 바로가기

C++15

영상의 산술 및 논리 연산 - 2. 영상의 논리 연산 OpenCV에서 지원하는 연산은 논리곱, 논리합, 배타적 논리합, 부정으로 총 네가지 연산을 지원 입력비트 논리연산결과 a b AND OR XOR NOT a 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 영상의 논리 연산은 각 픽셀 값에 대해 비트 단위로 이뤄짐. 우선 십진수를 이진수로 표시한다. 두 이진수를 비트단위로 논리곱, 논리합, 배타적 논리합, 부정 연산을 수행하여 계산한다. // 비트 단위 논리 연산을 수행하는 함수 네가지 void bitwise_and(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray()); void bitwise_or(InputArray src1, .. 2020. 2. 26.
영상의 산술 및 논리 연산 - 1. 영상의 산술 연산 영상은 2차원 행렬이므로 산술 연산 적용 가능. 두 개의 영상 더하기 src1, src2는 입력 영상, dst는 덧셈 연산의 결과 영상 이 때 포화연산도 당연히 함께 수행하여야 함.(255가 최댓값) // add() 함수 void add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray(), int dtype = -1); src1과 src2 행렬 깊이가 다르다면 dtype 인자를 지정해야 함. 같다면 기본값이 있으니 변경할 필요 x -> 두 영상의 타입이 서로 같을 경우 지정하지 않아도 된다는 뜻. 두 입력 영상 타입이 같을 경우 add() 함수를 대신하여 +연산자 재정의 사용 가능. 영상을 더할 때 가중치를 부여하여.. 2020. 2. 26.
영상의 밝기와 명암비 조절 - 3. 히스토그램 분석 1. 히스토그램 구하기 히스토그램이란? 영상의 픽셀 값 분포를 그래프 형태로 표현한 것. 히스토그램 h와 정규화 히스토그램 ex) 그레이스케일, 해당하는 픽셀의 갯수 구한 뒤 막대 그래프 형태로 표현 가로축 0-7까지 총 8개가 의미하는 것은 히스토그램의 빈. 결론적으로 위의 예시는 여덟 개의 빈으로 구성된 히스토그램을 생성한 것. 그레이스케일의 경우 256개의 빈을 갖는 히스토그램이 일반적. 히스토그램의 빈 갯수와 픽셀 값 범위가 항상 같아야 하는 것은 아님. 경우에 따라 빈 갯수를 픽셀 값 범위보다 작게 설정 가능. ex) 위의 예시에선 8개의 빈을 나타냈으나 4개만 나타내도 가능함. 이럴 경우 대략적인 분포만을 내타낼 수 있으므로 형태가 세밀하진 않음. // 영상의 히스토그램을 구하는 함수 void.. 2020. 2. 21.
영상의 밝기와 명암비 조절 - 2. 영상의 명암비 조절 1. 기본적인 명암비 조절 방법 명암비 : 밝은 영역, 어두운 영역의 차이, 대비라고도 함. 명암비가 낮은 경우 좀 탁한 느낌을 받을 수 있고, 높은 경우에는 선명하고 보다 더 뚜렷한 느낌을 받을 수 있음. 명암비 조절은 곱셈을 사용함. s 값이 1보다 작을 경우 명암비가 낮아지고, 1보다 클 경우 명암비가 커짐. 2. 효과적인 명암비 조절 방법 그레이스케일 범위 중간값은 128임. 128을 기준으로 크면 더욱 밝게, 작으면 어둡게 하는 것이 효과적인 조절 방법. 알파 값은 -1보다 같거나 큼. 알파의 범위가 -1 2020. 2. 18.
영상의 밝기와 명암비 조절 - 1. 영상의 밝기 조절 1. 그레이스케일 영상 다루기 그레이스케일은 CV_8UC1 타입의 객체를 생성해야 함. 만약 이미 세 채널 컬러 양상을 가지고 있는 걸 그레이스케일 영상으로 변환하려면 cvtColor() 함수를 사용해야 함. 채널 색상 순서 : 파랑, 초록, 빨강 2. 영상의 밝기 조절 픽셀에 일정 값을 더하거나 뺌으로써 영상의 밝기를 조절. src는 입력 영상, dst는 출력 영상, n은 밝기 값을 나타냄. 그레이스케일의 최댓값은 255, 최솟값은 0이므로 결과 영상의 픽셀 값을 설정해 주어야 함. 최대, 최소 값의 범위를 벗어나는 경우 255, 0 으로 설정하는 연산을 포화 연산이라고 부름. 밝기 조절 결과를 자기 자신에게 저장하려면 += 연산자 재정의를 사용. 3. 영상의 밝기 조절 직접 구현하기 연산자 함수를 사.. 2020. 2. 15.
OpenCV 주요 기능 - 5. 유용한 OpenCV 기능 1. 마스크 연산 1) setTo(InputArray value, InputArray mask = noArray()) 함수 행렬의 픽셀 값을 설정하기 위해서는 setTo() 멤버 함수를 사용해야 함. 이 함수는 마스크 연산을 지원하는 함수로, 아래 링크에 setTo() 멤버 함수 설명이 들어 있음. 2020/02/09 - [Computer Vision] - OpenCV 주요 클래스 - 2. Mat 클래스(2) OpenCV 주요 클래스 - 2. Mat 클래스(2) 2. 행렬의 생성과 초기화 // 1. Mat 객체 생성 Mat::Mat(int rows, int cols, int type); // 세로, 가로 순서로 입력 Mat::Mat(Size size, int type); // Size 클래스 내부에 값 .. 2020. 2. 14.