반응형

Program 132

[Open CV] 영상의 특징 추출 _ 영상의 미분과 소벨 필터

영상에서 미분을 구하는 이뉴는 에지를 검출하기 위함이다. 에지 ( Edge ) - 영상에서 픽셀의 밝기 값이 급격하게 변하는 부분 - 일반적으로 배경과 객체, 또는 객체와 객체의 경계 좌측 상단의 수직형태로 바뀌는 부분을 Step Function 이라고 말하는데 이러한 형태는 실제로는 보기 드문 형태이다. 그렇기 때문에 우측 상단에 있는 형태처럼 Smoody한 형태로 바뀌는 형태가 보통이다. 또는 좌측 하단에 있는 형태처럼 노이즈가 들어가있는 경우도 볼 수 있는데 이러한 형태에 Gaussian Blur 필터를 적용시켜주면 우측 하단에 있는 형태처럼 바꿀 수 있다. ( 픽셀값 증가의 엣지 ) 그렇기에 값이 급격하게 바뀌는 부분을 찾기 위해서 미분값을 사용하게 되는데 미분이라는 것은 간단히 말하면 변화율이라..

Program/OPEN_CV 2022.05.29

[Open CV] 기하학적 변환 _ 실전코딩 ( 문서 스캐너 )

문서 스캐너 구현 - 카메라로 촬영한 문서 영상을 똑바로 펴서 저장해주는 프로그램 구현 위와같이 바닥에 깔려있는 문서들을 affine 또는 perspective 변환을 통해 알아보기 쉽게 펴주는 변환을 구현한다. 구현 할 기능 - 마우스로 문서 모서리 선택 & 이동하기 - 키보드 ENTER 키 인식 - 왜곡된 문서 영상을 직사각형 형태로 똑바로 펴기 ( 투시변환 ( Perspective ) ) 일단 위와같은 기능을 구현하기 전 Open cv C++ 기반으로 만들어 본 투시변환 예제를 사용하여 나름대로의 기능을 만들어보고 강의에 나오는 코드와 얼마나 다른지 비교해볼 예정이다. 내 코딩 내 코딩은 4개의 라인들로 이루어져 변환시키는게 아닌 마우스 이벤트로 발생한 4개의 좌표값을 받아와 해당 좌표값을 Pers..

Program/OPEN_CV 2022.05.28

[Open CV] 기하학적 변환 _ 리매핑

- 리매핑이란 ( remapping ) ? 영상의 특정 위치 픽셀을 다른 위치에 재배치 하는 일반적인 프로세스 출력 영상에서 x , y 좌표의 픽셀 값을 입력영상에서 참조를 하는데 어느 위치에서 참조할것인지를 나타내는 map x 와 map y 라고 하는 함수를 정의를 해서 , 출력 영상의 픽셀값을 입력 영상 어느 좌표에서 참조해서 갖고올것인지를 지정하게끔해서 출력 영상의 픽셀값을 셋팅하는 것. 앞에서 들었던 강의 중 어파인변환, 투시변환같은 것들을 리매핑 기능으로 만들 수 있고, 기존에 만들었었던 사각형, 평행사변형 등의 모양이 아닌 영상 자체가 출렁이도록 만들수도 있다. 위 이미지를 보게되면 x 방향으로 -200 y 방향으로 -100 만큼 이동한 것을 볼 수 있다. 보통 위같은 이동변환을 보고 좌측방향..

Program/OPEN_CV 2022.05.27

[Open CV] 기하학적 변환 _ 어파인 변환과 투시변환

어파인 변환 vs 투시 변환 어파인 변환 직사각형 오리지널 영상에 대한 이동변환, 전단변환, 크기변환, 회전변환 등등이 적용되어 직사각형이 평행사변형 형태로 변환되는 경우를 통틀어 어파인 변환이라고 한다. 어파인 행렬은 2 X 3 형태의 실수형 행렬로 표현할 수 있는데 이 2 X 3 짜리의 행렬안에 회전정보도 들어갈 수있고 이동, 크기 변환정보도 한꺼번에 들어갈 수 있다. 어파인 행렬은 실제 6개의 파라메타가 필요하기 때문에 6 Degree Of Freedom 개의 미지수를 필요로 한다.이는 실제로 왼쪽의 빨간점 , 보라점, 초록점이 오른쪽의 빨간점, 보라점, 초록점 ( 3개의 점 )으로 이동했을때의 이동관계를 알면 남은 모서리의 점은 자연스럽게 유추될 수 있고affine transform 의 행렬 ( ..

Program/OPEN_CV 2022.05.26

[Open CV] 기하학적 변환 _ 영상의 회전

- 회전변환 ( rotation transformation ) 이란? 영상을 특정 각도만큼 회전시키는 변환 ( 반시계 방향 ) 영상을 회전해야할 경우는 자주 발생하는데 어떤 문서 이미지를 OCR 인식할 경우 문서들이 똑바로 스캔이 되어있어야지만 OCR 성능이 좋아지기때문에 영상이 회전되어있을 경우 바른 각도로 기울일때 자주 필요하다. 영상을 회전하기 위한 수식으로는 위 처럼 cos 함수와 sin 함수로 이루어져 있는데 x,y 좌표를 반시계 방향으로 세타만큼 회전시킬때 위 수식을 대입시키면 x ' , y ' 의 결과값을 만들 수 있다. 위 함수를 보게되면 rad은 20도에 해당하는 값을 radian 으로 변환한 변수이고아까 공식에서 나온대로 cos 과 sin 함수를 행렬로 만들어준다. ( aff )그리고 ..

Program/OPEN_CV 2022.05.25

[Open CV] 기하학적 변환 _ 이미지 피라미드

이미지 피라미드 ( Image pyramid ) 란? - 하나의 영상에 대해 다양한 해상도의 영상 세트를 구성한 것 - 보통 가우시안 블러링 & 다운 샘플링 현태로 축소하여 구성 왼쪽 아래의 입력영상을 기준으로 가로 , 세로를 반으로 줄이면서 다양한 크기의 영상을 만들어 놓는 것을 이미지 피라미드라고 한다. 이렇게 다양한 크기의 영상을 만드는 이유는 입력영상에서 어떤 객체를 찾고 싶을 때 ( ex_고양이 얼굴 ) 영상에서 객체크기가 다양하게 나타날 수 있기 때문에 위와 같이 이미지 피라미드를 만들거나 resize를 해줌으로써 다양한 객체를 찾을 수 있도록 하기 위함이다. 예를들어 고양이 얼굴이 100x100 사이즈를 가지고 있다면 원본 영상 640 * 480에서 고양이 얼굴이 100 x 100 사이즈가 ..

Program/OPEN_CV 2022.05.24

[Open CV] 기하학적 변환 _ 영상의 확대와 축소

크기 변환 ( Scale transformation ) 이란? - 영상의 크기를 원본 영상보다 크게 또는 작게 만드는 변환 - x축과 y축 방향으로의 스케일 비율(scale factor)를 지정 크기변환은 영상처리과정에서 빈번하게 일어나기 때문에 OpenCV에서 함수를 제공하고있다.우리가 많이 보던 cv2.resize 함수이다. cv2.resize( src, dsize, dst, fx, fy, interpolation ) src : 입력영상 dsize : 결과 영상 크기 ( w , h ) 튜플. ( 0,0 )이면 fx와 fy 값을 이용하여 결정 dst : 출력영상 fx, fy : x와 y 방향 스케일 비율 ( scale factor ). ( dsize 값이 0일 때 유효 ) ( 영상의 크기를 2배로 키우..

Program/OPEN_CV 2022.05.23

[Open CV] 기하학적 변환 _ 영상의 이동 변환과 전단 변환

영상의 기하학적 변환 ( geometric transformation ) 이란? 영상을 구성하는 픽셀의 배치 구조를 변경함으로써 전체 영상의 모양을 바꾸는 작업 픽셀의 좌표가 변환되는 형태 Image registration, removal of geometric distortion, ect. 우리는 위의 affine 과 projective ( perspective ) 의 기하학적 변환만 알아본다. 일단 이동변환 ( Translation transformation )을 먼저 알아본다. - 가로 또는 세로 방향으로 영상을 특정 크기만큼 이동시키는 변환 - x축과 y축 방향으로의 이동 변위를 지정 아래와같이 표현할 수 있다. 그리고 위와같은 2행3렬의 행렬을 어파인 변환 행렬을 numpy ndarray 로 만..

Program/OPEN_CV 2022.05.22

[Open CV] 필터링 _ 실전 코딩 ( 카툰 필터 카메라 )

2022.05.21 금일은 카툰 필터카메라 실전코딩에 관한 강의였다. 금일은 노트북에 있는 웹캠을 통해 입력되는 영상을 실시간으로 카툰 필터링을 적용하는 기능을 실제로 코딩해보는 시간이다. 총 3가지의 기능을 구현한다. - 카툰 필터 - 스케치 필터 - 스페이스바를 누를때마다 모드 변경 - 카툰 필터 입력 영상의 색상을 단순화시키고, 에지 부분을 검정색으로 강조하면 카툰처럼 변환이 된다. 이론상 이전에 배웠던 필터들을 사용하면 쉽게 구현할 수 있다. cv2.bilateralFilter() 함수를 사용하여 영상을 Blurring 하고 cv2.Canny() 함수를 사용하여 영상의 Edge 부분을 따내 표현해준 뒤 두 영상을 cv2.bitwise_and ( bit 단위 And 논리 연산 ) 처리하여 합쳐주면 ..

Program/OPEN_CV 2022.05.21

[Open CV] 필터링 _ 잡음제거 _ 양방향 필터

가우시안 필터 - 가우시안 잡음 제거에는 가우시안 필터가 효과적이다. 일반 영상에서 노이즈가 생겨서 지글지글하게 나타나는 픽셀값들에 가우시안 필터링을 거치게되면 훨씬 부드러운 영상이 되는것을 볼 수 있다. 하지만 가우시안 Blur 를 심하게하면 엣지들의 날카로운 느낌이 사라져버리는 단점이 있을 수 있다. 그래서 위같은 단점을 제거하고 가우시안 Blur의 노이즈제거 효과는 살리기위한 필터를 연구해서 나오게 된 필터가 있다. - 양방향 필터 ( Bilateral filter ) 에지보전 잡음 제거 필터의 하나이고 평균 값 필터 또는 가우시안 필터는 에지 부근에서도 픽셀 값을 평탄하게 만드는 단점이 있는데 이를 기준 픽셀과 이웃 픽셀과의 거리, 그리고 픽셀 값의 차이를 함께 고려하여 블러링 정도를 조절하도록 ..

Program/OPEN_CV 2022.05.20
반응형