반응형

OpenCV 90

[Open CV] 기본적인 영상처리 기법 _ 히스토그램 분석

히스토그램은 영상처리에서만 사용하는 용어가 아닌 통계에서의 데이터 분포를 나타내는 용어이다. 영상에서는 픽셀값의 분포를 나타내는 방법이다. 위의 이미지를 보면 해당 그레이스케일의 Value를 모아서 분포를 표현해놓은 값이다. 가로축은 각각의 픽셀값을 의미하는데 이를 bin이라고 한다. 보통 GrayScale은 255까지 있다. 정규화된 히스토그램 이라고 부르는 표현이 있는데 ( Normalized histogram ) 이는 각 픽셀의 개수를 영상 전체 픽셀 개수로 나누어 준것이다. 이를 사용하는 이유는 같은 영상의 크기가 다를때는 분포가 달라질 수 있기 때문에 사용하는 방법이다. 이는 기존의 히스토값을 확률로 변환하여 나타낼 수 있다. 보통 영상은 히스토그램을 보고 밝은영상인지 어두운영상인지를 구분할 수..

Program/OPEN_CV 2022.05.10

[Open CV] 기본적인 영상처리 기법 _ 컬러 영상과 색 공간

이 전 강의에서도 많이 다뤘지만 다시한번 COLOR에 대해서 다뤄보자면 컬러영상은 3차원 numpy.ndarray 로 표현된다. 즉, 3차원 행렬로 표현되는 걸 알 수 있다. 이는 Width Height 3Color ( B , G , R ) 순의 행렬로 표현될 수 있다. 예를들면 img1 = cv2.imread( 'lenna.bmp', cv2,IMREAD_COLOR ) 라고 하는 OpenCV함수를 이용해 이미지를 읽을수있고 img2 = np.zeros((480,640,3), np.uint8) 이라는 Numpy를 사용하여 비어있는 영상 ( 버퍼 )를 만들수도 있다. 그리고 GrayScale 로 불러와진 영상을 Color 영상으로 전환시킬 수도 있는데 이도 OpenCV 함수인 cvtColor 함수를 사용해서..

Program/OPEN_CV 2022.05.08

[Open CV] 기본적인 영상처리 기법 _ 영상의 산술 및 논리 연산

이미지처리에서 산술연산이라고 하는것은 두개의 영상의 같은 위치에 있는 픽셀들을 서로 더하거나 빼는 등의 연산을 말한다. 곱셈과 나눗셈의 연산도 하기는 하지만 흔히 하는 연산은 아니기때문에 덧셈과 뺄셈을 기본으로해서 알아본다. - 덧셈연산 2개의 영상을 덧셈 연산할때 같은 위치에 있는 픽셀값을 더하게되면 픽셀값이 255를 넘어가는 경우가 흔하기때문에 Saturate 연산을 꼭 해줘야한다. ( 포화연산 ) dst (x,y) = saturate ( src(x,y) + src2(x,y) ) -> cv2.add ( src, scr2, dst=None, mask=None, dtype=None )를 사용하는데 저번 시간과는 다르게 src , src2에 영상을 넣어주면 덧셈연산을 실행한다.그리고 mask를 사용하게 되..

Program/OPEN_CV 2022.05.07

[Open CV] 기본적인 영상처리 기법 _ 영상의 밝기 조절

금일부터 시작되는 강의는 기본적인 영상 처리기법에 관한 강의로 기초 사용법이 마무리 된 이후 실질적인 영상처리기법에 관한 내용들을 주로 다루는 것 같다. 영상의 화소 처리 기법 ( Point processing ) 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 픽셀값으로 설정하는 연산이다. - dst(x,y) = f(src(x,y)) ( src는 입력이미지 dst는 출력이미지 ) 여기서 알 수 있듯이 입력영상에 어떠한 함수처리를해서 ( 변환함수 ) 출력에 다시 입력시켜주는것이다. 함수처리에도 다양한 함수가 존재하는데 항등함수 , 입력영상 대비 밝아지는 출력영상 그래프의 함수 , 이진영상변환 함수등이 있다. 밝기 조절 수식중 하나인 dst(x,y) = src(x,y) + n 을 보면 입력영상 대비 +n..

Program/OPEN_CV 2022.05.06

[Open CV] OpenCV-Python 기초 사용법 _ 실전코딩

위 내용은 2개의 동영상을 재생하고 전환할때 애니메이션 효과를 넣는 이펙트에 관한 강의이다. 동영상 전환 이펙트에는 많은 기능들이 있는데 페이드 인 , 페이트 아웃 , 디졸브 , 밀기 , 확대 등의 기능들이 있다. 위 기능들을 구현하기 위해서 필요한 기능들은 두개의 영상을 동시에 열고 첫번째 동영상의 마지막 몇개의 프레임과 두번째 동영상의 처음 몇개의 프레임을 합성하는 기능 마지막으로 그 영상을 다시 저장하는등의 기능이 필요할 것이다. 아래 코드를 보면서 다시 설명하고자 한다. 일단 실행폴더에 저장되어있는 video1,2 .mp4 파일을 로드하여 cap1,2 의 변수에 저장시킨 뒤 예외처리를 해주는 기본적인 코드로 작성되었다. 그리고 두영상의 크기와 FPS는 같다고 가정한다. ( 1280 * 720 / ..

Program/OPEN_CV 2022.05.05

[Open CV] OpenCV-Python 기초 사용법 _ 연산시간 측정 방법

머신 비전 산업을 보면 가장 중요한게 있는데 그건 연산 시간이다. 어떤 제품의 검사나 검사결과 도출까지의 시간 및 결과들이 그 산업들의 이익과 직결되기때문에 가장 짧은 시간에 가장 정확하게 검사하고 그 결과를 도출해낼 수 있는 능력을보면 머신비전 업체의 능력을 가늠할 수 있다. 일단 컴퓨터 비전은 대용량 데이터를 처리하고있기때문에 매 단계에서 연산 시간을 측정하고 그 시간을 관리해줄 필요가 있다. 전체 알고리즘 중 어떤 한 알고리즘의 영상처리시간이 늦어지는 병목현상이 일어나게 된다면 전체적으로 연산처리시간이 늘어나기때문에 주의할 필요가 있다. 그래서 OpenCV에서는 연산시간을 측정할 수 있는 함수가 있다. - 연산시간 측정 ( cv2.TickMeter ) tm 은 cv2.TickMeter의 객체이고 t..

Program/OPEN_CV 2022.05.04

[Open CV] OpenCV-Python 기초 사용법 _ 트랙바 사용하기

트랙바라고 하는 것은 사용자가 지정한 범위의 값을 컨트롤할 수 있는 컴포넌트라고 할 수 있다. 트랙바 또는 슬라이더 컨트롤이라고도 불린다. 그리고 OpenCV에서 제공하는 유일한 그래픽 사용자 인터페이스라고 볼 수 있다. 트랙바를 사용하기 위해서는 cv2.createTrackbar 라는 함수를 사용해야한다. ( trackbarname, windowname, value, count, onchange ) 의 인자로 이루어져 있다. value는 트랙바의 위치 초기값이고 count 는 트랙바의 최대값 ( 최소값은 항상 0으로 고정 ) onCange는 트랙바의 위치가 변경될때 마다 호출할 콜백함수의 이름이다. 그리고 트랙바 생성도 마찬가지로 imshow 를 한뒤에 createTrackbar를 호출해주어야한다. 위..

Program/OPEN_CV 2022.05.03

[Open CV] OpenCV-Python 기초 사용법 _ 마우스 이벤트 처리하기

OpenCV에서 일반적으로 띄우는 window 창에서는 마우스 이벤트를 사용할 수 있는데이는 우리가 마우수를 사용해서 어떤 동작을하게될때 보통은 무시가되는데setMouseCalllback 함수를 사용하여 그 동작을 돌려받아 다른 기능을 할수 있다. 그래서 콜백함수를 등록한 뒤 사용할 수 있는데 seMouseCallBack ( windowName, onMouse, param = None ) 의 인자를 갖고있다. windowName은 마우스 이벤트를 실행 할 윈도우창의 이름이고 onMouse는 콜백함수의 이름을 지정해줄 수 있는 인자이다. 그리고 마지막에 있는 param 인자는 콜백함수에 전달할 데이터를 의미힌다. 여기서 onMouse 이벤트 처리함수의 형식을 따라서 만들어줘야하는데 onMouse ( eve..

Program/OPEN_CV 2022.05.02

[Open CV] OpenCV-Python 기초 사용법 _ 키보드 이벤트 처리하기

- 키보드 입력 대기함수 ( cv2waitkey(dealy==None) ) 위 함수는 이 전 강의에서도 많이 사용했었는데 키보드의 입력이 들어올때까지 계속해서 기다리는 함수이다. delay = 밀리초 단위 대기 시간. delay가 0보다 작거나 같으면 무한히 기다린다. 디폴트값은 0이다.그리고 키보드의 입력이 들어오면 retval로 반환을 해주는데 눌린 키 값의 ASCII 코드로 반환된다. 따라서 눌린 키보드의 값과 같을때 waitkey 함수를 끝내고 싶다면 '해당ASCII' 와 같을때로 끝내도록 작성하여 줄 수 있다. 그리고 예외적으로 키보드의 특수키를 입력받을수도 있는데 이는 cv2.waitKeyEX() 라는 함수를 사용하여 특수키를 입력받을 수 있다. 여기서 말하는 특수키는 insert, Delet..

Program/OPEN_CV 2022.05.01

[Open CV] OpenCV-Python 기초 사용법 _ 카메라와 동영상 처리하기2

OpenCV에서는 cv2.VideoWriter 클래스를 사용하여 프레임을 동영상 파일로 저장할 수 있다. 약 5가지의 코덱,압축방식,색상,픽셀포멧을 사용할 수 있는데 DIVX XVID FMP4 X264 MJPG 등의 압축방식을 사용할 수 있다. 혹시 아래 강의를 따라하다가 동영상이 잘 실행이 되지않는다고하면 위 코덱을 따로 설치해야 한다. 근데 왠만한 window 10이상의 PC들은 위 코덱들이 설치 되있을 것이다. - 저장을 위한 동영상 파일 열기 ( cv2.VideoWriter ) fourcc 인자에서는 위 5가지의 압축방식을 입력해주면 해당 압축방식으로 저장할 수 있고 중요한건 GrayScale 영상을 저장하고싶으면 그대로 저장할 수 없고 TreuColor 영상으로 변환한 이후에 저장해야한다. 그리..

Program/OPEN_CV 2022.04.30
반응형