이 섹션을 이해하려면 먼저 특성이 무엇인지 이해해야 합니다.
특징은 실제로 영역 픽셀 연산의 결과입니다! 예를 들어, Haar feature 는 아래 나열된 템플릿을 사용하여 이미지를 슬라이딩하고, 흰색 영역으로 덮인 픽셀의 합계에서 검은색 영역으로 덮인 픽셀의 합계를 빼면 Haar 특성 값이 계산됩니다!
Haar 기능은 일반적으로 Adaboost 분류기와 결합하여 대상을 식별합니다!
여기에는 운동기계 학습에 대한 지식이 필요하다! 다행히 Opencv 는 이미 우리를 위해 데이터를 훈련시켜 얼굴의 특징을 추출했다. Opencv 의 소스 코드에는 해당 XML 기능 파일이 있습니다. opencv 에서 제공하는 좋은 API 를 호출하면 얼굴 인식 기능을 빠르게 수행할 수 있습니다!
핵심 API 는 다음과 같습니다.
구현 단계:
HSV(Hue, Saturation, Value) 는 A. R. Smith 가 1978 에서 만든 색상 공간으로 Hexcone 모델이라고도 합니다.
이 모델의 색상에 대한 매개 변수는 색조 (h), 채도 (s) 및 광도 (v) 입니다.
각도로 측정하면 범위는 0 ~ 360 이고, 빨간색부터 시계 반대 방향으로 계산하며, 빨간색은 0, 녹색은 120, 파란색은 240 입니다. 보색은 각각 노란색 60, 청록색 180, 자홍색 300 입니다.
채도 s 는 색상이 스펙트럼 색상에 얼마나 근접해 있는지 나타냅니다. 한 가지 색상은 어떤 스펙트럼 색상과 흰색이 혼합된 결과로 볼 수 있다. 스펙트럼 색상 비율이 클수록 색상이 스펙트럼에 가까운 정도가 높을수록 색상의 채도도 높아집니다. 채도가 높고 색상이 어둡고 밝습니다. 스펙트럼 색상의 백색광 성분은 0 으로 채도가 가장 높다. 일반 범위는 0% ~ 100% 이며 값이 클수록 색상이 더 포화됩니다.
밝기는 색상의 밝기를 나타내며, 광원 색상의 경우 밝기 값은 방사체의 밝기와 관련이 있습니다. 오브젝트 색상의 경우 이 값은 오브젝트의 투과율이나 반사도와 관련이 있습니다. 보통 값의 범위는 0% (검은색) 에서 100% (흰색) 까지입니다.
결론:
참고: opencv 에서 h, s, v 의 값은 각각 [0, 1] 과 [0,1] 이 아니라 입니다.
여기서는 일부 HSV 공간의 색상 값을 나열하고 표에서 보라색을 빨간색으로 분류합니다.
[이미지 업로드 실패 ... (그림 -4f70f7- 1563843266225)]
。 (jpg)
이것은 단지 대략적인 판단일 뿐이다. 우리의 정상적인 사고에 따르면, 저녁에이 임계점은 밤이나 낮인지 판단 할 수 없습니다!
한 사진에서 한 물체의 색이 단색이라면, 우리는 일정 범위 내에서 색상 필터링을 통해 이 물체를 쉽게 추출할 수 있다.
아래에 테니스 사진이 한 장 있는데, 테니스의 색깔은 일정 범위 내에서 녹색이다. 우리는 이 사진에서 다른 녹색의 그림을 찾을 수 없습니다. 녹색으로 추출하는 것을 고려해 볼 수 있습니다!
기본적으로 그림의 색상 공간은 BGR 색상 공간입니다. 순수한 녹색을 찾아 추출하려면 (0,255,0) 과 비슷한 것을 써야 할 수도 있습니다. 우리가 일정 범위의 녹색을 대표한다고 가정하면, 매우 번거로울 것이다!
그래서 우리는 HSV 색 공간으로 전환하는 것을 고려합니다. 우리는 녹색 색조 H 의 범위를 쉽게 알 수 있고, 나머지는 프레임 색상의 채도 H 와 밝기 V 입니다!
구현 단계:
이미지 이진화는 이미지의 픽셀 회색 값을 0 또는 255 로 설정하는 과정입니다. 즉, 전체 이미지가 뚜렷한 흑백 효과를 나타냅니다.
디지털 이미지 처리에서 이진 이미지는 매우 중요한 위치를 차지하며 이미지의 이진화는 이미지의 데이터 양을 크게 줄여 대상의 윤곽을 강조합니다.
[이미지 업로드 실패 ... (그림-a31052-156384326226)]
글로벌 값을 임계값으로 사용합니다. 그러나 모든 경우에 좋은 것은 아닙니다. 예를 들어 이미지가 영역마다 조명 조건이 다른 경우. 이 경우 어댑티브 임계값이 도움이 됩니다. 여기서 알고리즘은 픽셀 주위의 작은 영역을 기준으로 픽셀의 임계값을 결정합니다. 따라서 동일한 이미지의 여러 영역에 대해 서로 다른 임계값을 얻을 수 있으므로 조명이 다른 이미지에 더 나은 결과를 얻을 수 있습니다.
Cv.adaptiveThreshold 메서드에는 위의 매개 변수 외에도 세 가지 입력 매개 변수가 있습니다.
AdaptiveMethod 는 임계값 계산 방법을 결정합니다.
블록 크기에 따라 주변 영역의 크기가 결정됩니다. 주변 픽셀의 평균 또는 가중치 합계에서 상수를 뺍니다.
일본 Otsu 가 제안한 알고리즘, 일명 최대 클래스 간 분산법은 이미지 분할에서 임계값 선택에 가장 적합한 알고리즘으로 간주됩니다. 이 알고리즘을 채택하는 것의 장점은 실행 효율이 높다는 것이다!
& ltimg src= ". /img2/otsu.jpg "width =" 500 "/>
만약 우리가 이미지를 하나의 신호로 본다면, 소음은 하나의 간섭 신호이다. 이미지를 수집할 때 다양한 간섭으로 인해 이미지 노이즈를 도입할 수 있습니다. 컴퓨터에서 이미지는 매트릭스입니다. 원본 이미지에 노이즈를 추가하려면 픽셀에 그레이스케일만 추가하면 됩니다.
F(x, y) = I(x, y)+소음
흔한 소음은 소금과 후추 소음인데, 왜 소금과 후추 소음이라고 합니까? 이미지의 픽셀이 소음의 영향으로 무작위로 어두운 점이나 흰색 점으로 변하기 때문입니다. 이곳의' 고추' 는 우리가 흔히 볼 수 있는 붉은 고추나 피망이 아니라 외래의' 고추' (일종의 향료) 이다. 우리는 고추가 검고 소금이 하얗다는 것을 알기 때문에 이런 이미지의 이름이 생겼다.
다음으로 10% 후추 소음과 소금 소음을 생성합니다.
또한 opencv 의 이미지 매트릭스 유형은 uint8, 0 이하 및 255 이상의 값이 잘리지 않고 모듈러 연산을 사용한다는 점에 유의해야 합니다. 즉 200+60=260% 256 = 4 입니다. 따라서 원시 이미지 행렬과 노이즈 이미지 행렬을 부동 소수점 숫자로 변환하여 더하고 다시 돌려야 합니다.