반응형
OpenCV/OpenCV 강좌2018. 12. 15. 13:52OpenCV Python 강좌 - 2차원 히스토그램과 Histogram Backprojection

이미지에서 2차원 히스토그램을 구하는 방법과 응용으로 Histogram Backprojection을 설명합니다. 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/4.0.0/d6/d00/tutorial_py_root.html 최초작성 2018. 12. 15 1. 2차원 히스토그램(2D Histograms)그레이스케일 이미지로 부터 구한 히스토그램은 1차원 히스토그램이었습니다. 그레이스케일 이미지가 하나의 채널을 가지고 있었기 때문에 하나의 특징만을 고려했습니다. 2차원 히스토그램에서는 두가지 특징을 고려합니다. 예를 들어 HSV 색공간 이미지를 입력으로 사용한다면 모든 픽셀에서 두가지 특징 Hue 값와 Saturation ..

OpenCV/OpenCV 강좌2018. 12. 14. 07:31OpenCV Python 강좌 - 히스토그램(Histogram)

이미지에서 히스토그램을 구하는 방법과 응용으로 Histogram Equalization, CLAHE을 설명합니다. 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/4.0.0/d6/d00/tutorial_py_root.html 최초작성 2018. 12. 13 1. 히스토그램이란? 히스토그램은 이미지를 구성하는 픽셀값 분포에 대한 그래프입니다. X축은 픽셀값으로 범위는 0 ~ 255 사이입니다. Y축은 이미지에서 해당 픽셀값을 가진 픽셀의 개수입니다. 히스토그램의 왼쪽에는 가장 어두운 검은색 픽셀(0)의 갯수를 보여주며 오른쪽으로 갈 수록 밝은 픽셀의 갯수를 보여줍니다. 히스토그램을 보면 이미지 촬영시 빛의 노출이 제대로 되..

OpenGL2018. 12. 1. 22:05Python으로 배우는 Modern OpenGL - 1. 개발환경 만들기

Python에서 OpenGL을 동작시켜야 하는 필요성을 느껴서 PyOpenGL, glfw를 설치하고 예전에 작성했던 포스팅에 있는 코드를 Python으로 변환해서 실행시켜 보려했는데 잘 안되네요. C++ 코드에서는 glew를 사용했었는데 파이썬에는 존재하지 않는 라이브러리라서 그런듯 싶습니다. Modern OpenGL 강좌 - 삼각형 그리기( 렌더링, Vertex Array Object, Vertex Buffer Object)https://webnautes.tistory.com/1153 그래서 깃허브에서 찾은 PyOpenGL 예제 코드를 분석하고 필요하면 변형해서 포스팅을 해보려고 합니다. https://github.com/totex/PyOpenGL_tutorials 오늘은 실행시켜 보는 방법만 소개합니..

OpenCV/OpenCV 강좌2018. 11. 28. 11:51OpenCV Python강좌 - 컨투어(Contour) 검출 및 특성 사용하기

컨투어 검출하는 방법과 컨투어 특성을 사용하는 방법을 다룹니다. 사용하는 OpenCV 버전에 따라 findContours 함수의 사용 방법이 다음처럼 차이가 있습니다. OpenCV 4.xcontours, hierarchy = cv.findContours(img_binary, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE) OpenCV 3.x_, contours, hierarchy = cv.findContours(img_binary, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE) Contour Features영역 크기 import cv2 as cv img_color = cv.imread('test.png') img_gray = cv.cvtColor(img_color..

OpenCV/OpenCV 강좌2018. 11. 15. 08:00OpenCV 강좌 - Canny Edge Detector 이론 및 사용 예제

Canny Edge Detector를 구현하기 위해 필요한 이론과 OpenCV에서 제공하는 Canny 함수 사용방법을 다룹니다. 캐니 에지 디텍터(Canny Edge Detector) 이론 2. OpenCV Canny 함수 2-1. Python 기본 예제 트랙바 사용 예제 2-2. C++ 기본 예제 트랙바 사용 예제 3. 참고 2018. 11. 14. 최초 작성. 1. 캐니 에지 디텍터(Canny Edge Detector) 이론 2. OpenCV Canny 함수OpenCV에서는 하나의 함수 Canny만 호출하면 캐니 에지를 얻을 수 있습니다. 2-1. Python 기본 예제 img_canny = cv2.Canny(image, threshold1, threshold2, edges=None, aperture..

OpenCV/OpenCV 강좌2018. 10. 23. 12:36OpenCV Python 강좌 - 마우스 클릭으로 HSV 색공간에서 특정색 추출하기

원본 RGB 영상에서 마우스 클릭하면 해당 색에 대응하는 HSV 공간의 색을 계산하여 일정 범위내로 색을 추출하는 예제입니다. 마지막 업데이트 - 2018. 10. 23포스팅 내용을 개선하여 웹캠 영상에서 파란색 물체를 검출하고 추적하는 유튜브 영상을 만들어 봤습니다. 포스팅 끝에 있습니다. 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/3.4.3/d6/d00/tutorial_py_root.html 마우스 클릭으로 HSV 색공간에서 특정색 추출하는 테스트 영상입니다. 테스트에 사용한 이미지와 전체 소스코드입니다. import cv2 as cv import numpy as np hsv = 0 lower_blue1 = 0 ..

OpenCV/OpenCV 강좌2018. 10. 16. 20:47OpenCV Python 강좌 - 에지 검출( Edge detection )

Sobel 함수를 사용하여 에지를 검출하는 방법을 설명합니다. 마지막 업데이트 - 2018. 10. 16 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/3.4.3/d6/d00/tutorial_py_root.html 에지는 픽셀값이 급격히 변하는 지점입니다.1차원 그래프로 그려보면 다음처럼 픽셀값이 갑자기 커집니다. 1차 미분해보면 픽셀값이 급격하게 증가한 부분에서 1차 미분값이 큰것을 알 수 있습니다. 주변보다 1차 미분값이 큰 부분을 에지로 검출하게 됩니다. 1차 미분의 근사값을 계산하기 위해 미리 정의한 커널과 이미지를 컨볼루션하여 에지를 검출합니다.소벨에서는 X 방향 에지 검출과 Y 방향 에지 검출을 위해 별도의 ..

OpenCV/OpenCV 강좌2018. 10. 14. 14:15OpenCV Python 강좌 - 모폴로지 연산 (Morphological Operations)

OpenCV에서 제공하는 Erosion, Dilation, Opening, Closing 연산하는 함수들을 다룹니다. 보통 바이너리 이미지(Binary Image)에서 흰색으로 표현된 오브젝트의 형태를 개선하기 위해 사용됩니다. 마지막 업데이트 - 2018. 10. 14 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/3.4.3/d6/d00/tutorial_py_root.html 1. Erosion 2. Dilation 3. Opening 4. Closing 1. Erosion바이너리 이미지에서 흰색 오브젝트의 외곽 픽셀을 0(검은색)으로 만듭니다. 노이즈(작은 흰색 물체)를 제거하거나 붙어 있는 오브젝트들을 분리하는데 ..

OpenCV/OpenCV 강좌2018. 10. 11. 13:29OpenCV Python 강좌 - Smoothing(Blurring)

이미지 블러링은 이미지를 로우 패스 필터 커널로 컨벌루션하는 것입니다. 이미지에서 고주파인 노이즈가 흐려지게 됩니다. 이때 같은 고주파인 선도 같이 흐려지게 됩니다. 마지막 업데이트 - 2018. 10. 11 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/3.4.3/d6/d00/tutorial_py_root.html 컨볼루션(Convolution) 이미지에 커널(마스크)을 컨볼루션하여 블러닝(흐리게), 샤프닝(선명하게) 등의 처리를 할 수 있습니다. 컨볼루션 계산은 커널과 이미지 상에 대응되는 값끼리 곱한 후, 모두 더하여 구해집니다. 이 결과값을 결과 영상의 현재 위치에 기록하면 됩니다. img_output(1,1) ..

OpenCV/OpenCV 강좌2018. 10. 5. 19:19OpenCV Python 강좌 - 영상 이진화(binarization, thresholding)

threshold 함수와 adaptiveThreshold함수를 사용한 영상 이진화를 다루고 있습니다. 마지막 업데이트 - 2018. 10. 5 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/3.4.3/d6/d00/tutorial_py_root.html 보실때 HD 화질로 해야 합니다. Simple Thresholdingthreshold 함수를 사용한 이진화입니다. 전체 이미지에 하나의 임계값을 적용합니다. 첫번째 아규먼트는 원본 이미지, 두번째 아규먼트는 임계값, 세번째 아규먼트는 임계값 이상일 경우 바꿀 최대값(보통 흰색인 255로 지정)을 지정합니다.네번째 아규먼트로 THRESH_BINARY를 사용하면 픽셀값이 임계..

반응형
image