Programming/영상처리 6

Visual Studio(VC++)에서 OpenCV를 사용하기 위한 프로젝트 설정 및 샘플 코드 실행

안녕하세요.   Visual Studio 2019, OpenCV 4.5.3 조금 지난 버전이긴 한데, 현재까지 사용하고 있어서 다음에 설정할 때도 참고하고자  남깁니다.  1. Visual Studio에서 빈 프로젝트 생성  테스트할 프로젝트 이름을 넣습니다.    소스파일 폴더에  새 항목을 선택하고 "Visual C++ -> C++ -> 파일명  main.cpp 생성합니다.    2. OpenCV Library 불러오기 위한 세팅 1) 속성 설정   프로젝트(OpenCV_first)에서 오른쪽 버튼 속성 혹은 상단 메뉴 "프로젝트->OpenCV_first" 속성 선택   2) 속성 페이지 설정  속성 상단 메뉴에서 구성을 "모든 구성", 플랫폼은 "x64"로 변경합니다. debug, release 모..

색상(컬러) 모델 설명 및 컬러 모델 간 변환 식

1. 컬러모델 종류 및 설명 1) RGB (Red, Green, Blue)  RGB는 디지털 디스플레이 장치에서 색상을 표현하는 기본 모델이며, 빨강(Red), 초록(Green), 파랑(Blue) 세 가지 색상의 조합으로 다양한 색상을 만듭니다. 색을 혼합할수록 색이 밝아지는 가산체계를 사용합니다.   장점: - 디지털 디스플레이(모니터, TV 등)와 일치하여 색상 표현이 직관적 - 많은 색상 표현 가능 단점: - 인간의 색 지각 방식과 일치하지 않아서 일부 색상 조정이 어려울 수 있음 - 인쇄 등의 다른 색상 모델로 변환 시 왜곡이 발생할 수 있음  2) CMY (Cyan, Magenta, Yellow)  CMY는 인쇄 분야에서 주로 사용하는 색상 모델로, Cyan(청록), Magenta(자홍), ..

[영상처리] 영상 이진화

1. 영상 이진화 1) 영상 이진화 설명 - 영상 밝기값 히스토그램 f(x)에서 임의의 밝기 임계값(Threshold, T)으로 영상을 이진화하는 처리 - 이진화 수식은 밝기값(x)이 설정한 밝기 임계값(Threshold, T) 보다 크면 255로, 보다 작거나 같으면 0으로 처리하는 것을 영상 이진화 - 예로, 임계값(T)을 128로 설정할 경우 입력영상을 이진화할 경우, 밝기값이 128보다 크면 255로 밝은 값으로 처리가 되고, 128보다 작으면 0으로 어둡게 된다. 2) 임계값(Threshold) 결정하는 방법 - 밝기 히스토그림을 보고 수동으로 값을 결정하는 방법과, 알고리즘을 통해서 자동 결정(예, Otsu)하는 방식이 있다. - 특히 듀얼 모드 히스토그램(봉우리가 두 개로 구분되는)에서 오브..

[영상처리] 밝기값 히스토그램

1. 히스토그램 1) 히스토그램 설명 - 영상의 명암값 프로필을 보여주기 위해 정보로서 영상을 구성하는 명암대비 및 명암값의 분포에 대한 정보 - 왼쪽은 4x4의 16 화소의 영상을 표현한 것이고, 오른쪽이 왼쪽을 밝기값 히스토그램으로 그린 그림으로 0~5까지의 밝기값을 가지는 화소들이 몇 개씩 있는가를 나타내는 그림입니다. - 1의 밝기를 가지는 픽셀이 2개이고, 2는 3개... 5는 4개가 있다는 것입니다. 2) 히스토그램 예시 동전 영상을 히스토그램으로 보면, 배경(Background)되는 부분은 주로 검은색으로 되어있고, 물체(Foreground)가 있는 부분은 배경색에 비해 밝습니다. 이것은 듀얼모드 히스토그램이라고 볼 수 있습니다. 히스토그램에서 보면 밝기값이 작은 부분은 배경화소로 볼 수 있..

[e4ds] Quest2 - YOLOv8를 이용한 아몬드(Almond)인식 및 카운팅

안녕하세요. e4ds에서 진행한 YOLOv8 프로젝트 두 번째 Quest를 진행해 보았습니다. 조금 열심히 해서 여러 기능을 넣어 보려고 했는데, 그렇게 까지는 못하고 전반적으로 접해보고, 기능을 추가하는 것으로 마무리하였습니다. AI 기능이 발전하는 것은 좋은데 새로운 것이 나오면 개발환경이 바뀌다 보니 기존에 개발하던 소스들이 작동하지 않는 경우가 많아서 조금 아쉬운 부분이 있었습니다. 1. 프로그램 설명 - Custom Data Set을 만들어 컨베이어 벨트처럼 지나가는 물체를 카운트하는 프로그램 - 현재는 아몬드(Almond)를 YOLOv8의 학습데이터로 삼아 Object Detection을 수행 - 프로그램 소스를 간단하게 하기 위해서 Supervision 라이브러리를 사용과 Tracker 성능..

[영상처리] 영상 화소(포인터) 처리

1. 영상 화소(포인터) 처리 란 - 입력 영상 화소(Pixel)에 포인터 연산자(Point Operator)에 따라서 출력 영상 화소(Pixel) 값이 결정되는 영상 - 입력영상 + (Point Operator) -> 출력영상 - Point Operator 예) 산술 연산자(+, -, *, /) 2. 영상 화소(포인터) 구현 예제 - D1 : 임의의 상수값 (예 : 밝기값 0~255) 1) 덧셈연산 : Out_image[i][j] = In_image[i][j] + D1; 2) 뺄셈연산 : Out_image[i][j] = In_image[i][j] - D1; 3) 곱셈연산 : Out_image[i][j] = In_image[i][j] * D1; 4) 나눗셈연산 : Out_image[i][j] = In_i..