일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- length
- parameter
- Unity
- Overloading
- atmega328
- file access
- sensor
- Barcode
- preprocessing
- APP
- Android
- Pointer
- java
- digitalRead
- aduino
- inheritance
- UNO
- public
- SERIAL
- wpf
- Encapusulation
- Binary
- mfc
- memory
- stream
- flutter
- Read
- Contour
- Class
- compare
- Today
- Total
폴크(FOLC)
머신 비전 알고리즘 - OpenCV - 이미지처리1 본문
# 디지털 컴퓨터를 이용하여 알고리즘을 통해 디지털 이미지(넓은 범위의 알고리즘을 입력 데이터)를 처리 한다. 특히, 노이즈 및 왜곡 축적과 같은 문제를 피할 수 있고 2차원 이상으로 정의되면서 다차원 시스템의 형태로 이용되고 있다.
# 디지털 이미지 처리의 발전의 세 가지 요인
> 컴퓨터의 발전, 수학의 발전, 산업(환경, 농업, 군사) 및 의학 분야에 대한 수요 증가
# 디지털 이미지 처리
# 이미지의 정보를 시간영역과 주파수영역으로 표현 가능하다.
# 이미지를 처리하는 filter 의 특성에 따라서 시간영역/주파수 영역에서 처리 한다.
> 저주파수( LPF : Low Pass Filter ), 고주파수( HPF : High Pass Filter )
# 이미지 처리 - OpenCV 4.5.3 으로 테스트
# 이미지의 정보에서 저주파수 성분은 통과 시키고 고주파수 성분은 제거
# kernel_size 를 X, Y 로 설정가능하며, 3 이상의 홀수를 선택
> srcImage : 입력, dstImage : 결과, kernel_size : 커널 크기, anchor_point : 엥커 위치, borderType : 이미지 끝부분
# cv::blur
> 엥커 위치를 기준으로 커널 크기에 포함 되는 데이터의 평균을 계산한다.
> kernel_size = 3, anchor_point = 1, borderType = cv::BORDER_DEFAULT;
> cv::blur(srcImage, dstImage, kernel_size, anchor_point, borderType);
# cv::medianBlur
> 엥커 위치를 기준으로 커널 크기에 포함 되는 데이터의 중간 위치 값을 선택한다.
> kernel_size = 3;
> cv::medianBlur(srcImage, dstImage, kernel_size );
# cv::GaussianBlur
> 엥커 위치를 기준으로 커널 크기에 포함 되는 데이터를 Gaussian form 으로 convolution 연산한다.
> kernel_size = 3, sigmaX = 5.0, sigmaY = 0.0, borderType = cv::BORDER_DEFAULT;
> cv::GaussianBlur(srcImage, dstImage, kernel_size, sigmaX, sigmaY, borderType);
# cv::bilateralFilter
> 가우스안 함수 필터를 확장한 개념으로 에지를 보존하면서 스무딩 연산한다.
> 특별한 부분은 distance(d) 값을 이용해서 이웃하는 픽셀과의 거리를 결정한다.
> 만약 d < 0 으면, sigmaSpace에 의해서 필터 크기가 결정 ( 2.0 * 3.0 * sigmaSpace + 1.0 )
> sigmaColor 값은 이웃 화소 중에서 색상 공간에서 멀리 떨어진 색상을 혼합하여 유사한 색상으로 뭉친다.
# sigmaColor는 컬러 공간에서 필터 표준편차를 나타낸다.
> distance = 3, sigmaColor = 5.0, sigmaSpace = 3.0, borderType = cv::BORDER_DEFAULT;
> cv::bilateralFilter(srcImage, dstImage, distance, sigmaColor , sigmaSpace , borderType );
'머신 비전 > 머신 비전 알고리즘 테크닉 CPP' 카테고리의 다른 글
머신 비전 알고리즘 - OpenCV - 이미지처리4 (0) | 2021.07.24 |
---|---|
머신 비전 알고리즘 - OpenCV - 캘리브레이션 (0) | 2021.07.23 |
머신 비전 알고리즘 - OpenCV - 이미지처리3 (0) | 2021.07.23 |
머신 비전 알고리즘 - OpenCV - 이미지처리2 (0) | 2021.07.22 |
머신 비전 알고리즘 - OpenCV (0) | 2021.07.20 |