반응형

전체 글 169

[Open CV] 영상의 특징 추출 _ 실전코딩 ( 동전 카운터 )

동전 카운터 - 영상의 동전을 검출하여 금액이 얼마인지를 자동으로 계산하는 프로그램 - 편의상 동전은 100원짜리와 10원짜리만 있다고 가정 구현할 기능 - 동전 검출하기 -> 허프 원 검출 - 동전 구분하기 -> 색상 정보 이용 동전 검출하기 - 동그란 객체는 동전만 있다고 가정 cv2.HoughCircles() 함수 사용 - 영상 크기 : 800x600 (px) - 동전크기 100원 : 약 100x100 (px) 10원 : 약 80x80 (px) 크기정보로 구분하게 되면 100원짜리가 90px 10원짜리가 90px 이 될 수 있기때문에 크기정보보다는 색상 정보로 구분하는 것이 확실해보인다. 따라서 왼쪽 10원짜리들의 Hue 값을 보게되면 빨간색의 0에 가까운 값을 갖고있고 오른쪽 100원짜리들의 Hu..

Program/OPEN_CV 2022.06.03

[Open CV] 영상의 특징 추출 _ 허프변환 _ 원 검출

허프 변환을 응용하여 원을 검출할 수 있다. 허프 직선 변환처럼 원의 방정식 ( x - a )^2 + (y - b)^2 = c^2 을 사용하여 파라메타 공간으로 변환하여 a , b , c 를 사용하여 원을 검출할 수는 있다. 하지만 위 3개의 파라메타를 이용하여 공간변환을 하는 것은 시간이 오래걸리기때문에 위와같은 방법으로는 사용하지 않는다. 그래서 속도 향상을 위해 Hough Gradient Method 방법을 사용한다. 입력 영상과 동일한 2차원 평면 공간에서 축적 영상을 생성 에지 픽셀에서 그래디언트 계싼 에지 방향에 따라 직선을 그리면서 값을 누적 원의 중심을 먼저 찾고, 적절한 반지름을 검출 단점 : 여러개의 동심원을 검출 못함 - 가장 작은 원 하나만 검출됨 아래와 같이 원의 에지로 판단되는 ..

Program/OPEN_CV 2022.06.02

머신러닝 이해하기 (2)

머신 러닝 단계 - 학습 ( Train ) : 내가 가지고있는 학습 데이터를 이용하여 모델을 학습하는 과정 - 예측 ( Predict ) : 학습된 모델을 이용하여 새로운 데이터로부터 적절한 값을 예측하는 과정. ( 추론 ) * 학습 레이블 - 학습 영상에 대한 정답 ( 클래스 번호 ) 머신 러닝 학습의 목적 - 미래의 새로운 데이터를 더 정확하게 예측하기 위함 모델의 일반화 ( generalization ) 성능을 향상 시키는 방향으로 학습해야 함. - over fitting 을 보게되면 현재 학습해온 데이터에 비교해서 보자면 좋은 결과일 수 있지만 노이즈까지 포함된 데이터로 새로운 학습데이터를 받게되면 오히려 좋지 않는 결과일 수 있다. - 따라서 보통 Balanced 나 Appropirate-fit..

[Open CV] 영상의 특징 추출 _ 허프변환 _ 직선 검출

허프 변환 ( Hough Transform ) 직선 검출이란? - 2차원 영상 좌표에서의 직선의 방정식을 파라미터 ( parameter ) 공간으로 변환하여 직선을 찾는 알고리즘 에지 추출 결과는 보통 검은배경에 흰 라인형태로 에지가 나타나게 된다. 즉, 입력영상에서 에지가 있는 좌표를 모두 추출할 수 있다는 의미이다. 그럼 그 좌표를 이용하여 직선 또는 곡선의 정보를 추출해내고자 하는 시도들이 많이 있는데 그 중 가장 대표적인게 허프변환 ( 직선검출 ) 이다. 그렇지만 직선의 정보를 추출하기 위한 알고리즘이라고 생각하기보다는 위 설명처럼 직선의 방정식을 파라미터 공간으로 변환하여 누적행렬을 이용해서 원하는 파라메타를 찾는 방정식 ( 알고리즘 ) 이라고 생각하는 것이 맞다. 위처럼 y = ax + b 를..

Program/OPEN_CV 2022.06.01

[Open CV] 영상의 특징 추출 _ 캐니 엣지 검출

캐니 에지 검출 - 1986년 Jhon F. Canny 라는 사람이 개발한 Edge 검출 알고리즘이다. - OpenCV 에 구현되어있어 많은 사람들이 사용하고 있는 방식 중 하나이다. 지난 시간에 구현한 Sobel Filter는 Threshold를 어느 부분에 두는지에 따라 Edge가 두껍게 잡힐지 얇게 잡힐지가 결정되는 단점이 있었는데 CannyEdge는 기본적으로 Sobel Filter를 쓰지만 Edge를 좀 더 정확하게 검출한다. 그 방식으로는 정확한 검출 ( Good Detection ) : 에지가 아닌 점을 에지로 찾거나 또는 에지인데 에지로 찾지 못하는 확률을 최소화 정확한 위치 ( Good Localization ) : 실제 에지의 중심을 검출 Sobel Filter는 5개의 픽셀을 에지로 ..

Program/OPEN_CV 2022.05.31

머신러닝 이해하기 (1)

본 포스팅은 패스트캠퍼스 OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지를 참고하여 작성하였습니다. 머신러닝 ( Machine Learning ) 이란? - 주어진 데이터를 분석하여 규칙성, 패턴 등을 찾고, 이를 이용하여 의미 있는 정보를 추출하는 과정 전통적인 프로그래밍과 Machine Learning 을 많이 비교하는데 전통적인 프로그래밍은 Data 에대한 Program을 입력하게되면 그것에 대한 결과로써 Output 을 내놓는것이고 Machine Learning은 Data 는 동일하게 들어가나 Outcome ( Data 에대한 정답 ) 을 같이 입력해주면 이에대한 근거 ( Program, Rules ) 를 내놓는다. 따라서 Machine Learning 은 Program 또는 Rule을 만..

[Open CV] 영상의 특징 추출 _ 그래디언트와 엣지 검출

영상의 그래디언트 ( Gradient ) - 함수 f ( x , y )를 x축과 y축으로 각각 편미분 ( partial derivative ) 하여 벡터 형태로 표현한 것 영상이라는 것은 2차원의 평면이기때문에 미분을 할 때 x방향과 y 방향을 각각 따로 미분을 해줘야하는데 그렇게 되면 수식이 지저분해질 수 있기 때문에 묶어서 하나로 표현한 것을 Gradient 라고 한다.즉, x 방향의 미분값과 y 방향의 미분값을 묶어서 하나의 수로 표현하는 방법이다. 그래디언트 크기 : ∣∇f∣=fx​²+fy​²​ 그래디언트 방향 : θ=tan−¹(fy/fx​​) 그럼 이 크기와 방향이 의미하는 것은 무엇인가? 실제 영상에서 구한 그래디언트 크기와 방향 - 그래디언트 크기 : 픽셀 값의 차이에 비례 , 픽셀값이 얼만..

Program/OPEN_CV 2022.05.30

[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
반응형