[안드로이드로 배우는 OpenCV] 캐니 엣지 검출기(Canny Edge Detector)

Canny Edge Detector 캐니 엣지 검출기는 John Canny가 1986년에 논문에서 발표한 내용으로 라플라스 필터 방식을 상당히 개선했다.  J. Canny는 다음과 같은 3가지 조건을 충족하는 엣지 검출기를 만들고자 했다. Good detection – 엣지가 아닌 점을 엣지로 찾거나 또는 엣지인데 엣지로 찾지 못하는 확률을 최소화한다. Good localization – 실제 엣지의 중심부분을 검출한다. 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 라플라시안 필터(Laplacian)

라플라스 연산자 라플라스 또는 라플라시안 연산자는 2차 미분 연산자의 일종으로, 기울기의 발산이다.  이전 포스팅에서 소벨 연산자에 대해 다룬적이 있다. 엣지 부근에서 픽셀의 값이 뛰는 것을 확인할 수 있었다. 만약에 여기에 2차 미분을 취하면 어떻게 될까? 2차미분은 말 그대로 1차 미분값을 다시 한번 미분하는 방법을 말하는데, 2차미분의 장점은 엣지의 중심부분을 찾을 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 영상의 그래디언트(Gradient)와 엣지검출

Gradient 그래디언트란  x방향으로 미분과 y방향으로의 미분을 따로 계산하고 그걸 하나로 묶어서 벡터로 표현 한것을 말한다. 아래의 [그림1]은 원본이미지 및 원본이미지에 소벨필터를 x 및 y 방향으로 적용하고, 가시성을위해 delta값을 추가로 128 적용한 영상이다. 수학적 기호로 그래디언트를 표현할때는 역삼각형(▽)으로 표현한다. 위의 수식을 살펴보면 그래디언트 ▽f 는 x축과 y축으로 각각 편미분하여 fx와 fy의 더보기…

[안드로이드로 배우는 OpenCV] 이미지의 엣지 검출과 미분 (소벨 필터, 샤르 필터)

엣지(edge)와 미분 영상처리에서 엣지란 이미지에서 픽셀의 밝기가 급격하게 변하는 부분을 말한다. 일반적으로 배경과 객체 또는 객체와 객체의 경계를 의미 한다. 객체 경계부분의 픽셀값이 급격하게 변하는 것을 가정으로 하기 때문에 실제로 객체의 경계와 배경의 값이 크게 차이가 없다면 엣지를 구분하기 어렵다. 이미지를 (x,y)변수의 함수로 나타내고 (x,y) 좌표의 픽셀 값을 x로  나타낼 더보기…

Gradle 스크립트 언어를 Groovy DSL에서 Kotlin DSL로 변경 하기

Migrating Groovy DSL to Kotlin DSL Kotlin DSL 이란? DSL이란 Domain Specific Language의 약어로 특정 분야에 최적화된 프로그래밍 언어를 뜻한다. 상용구 코드를 최소화 하기 위해 명령형 코드 대신 선언적 코드 형식을 따른다. Kotlin DSL은 코틀린의 언어적인 특징으로 가독성이 좋고 간략한 코드를 사용하여 Gradle 스크립팅을 하는 것을 목적으로 하는 DSL이다. 빌드 더보기…

글쓴이 Charlezz,

안드로이드 개발자의 영어 단어 공부 – 9주차 —

Vocabulary pore: 모공 pimples: 여드름, acnes(잡티) physical condition severe, serious: 심각한 on the day: 당일에 rotator muscle: 회전근 regular discount: 상시 할인 employee discount: 직원 할인 in bulk: 대량으로 cheekbones: 광대뼈 occupational disease: 직업병 cervical spine: 경추 dedicated husband, loving husband: 애처가  parking space: 주차자리 in a split second: 순식간에 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] Perspective 변환 (스캐너 앱 만들기)

Perspective transformation Perspective 변환(투시 변환)은 이미지 또는 이미지 내의 객체를 나란히 직선으로 만들 때 매우 유용한 변환이다. Perspective 변환을 적용하는 아주 좋은 예시는 테이블 위의 문서를 가지런하게 만드는 것이다. Perspective 변환을 시작하기 앞서 간단히 어떠한 방식으로 이러한 작업을 할 수 있는지 알아보자.  우선 원본 이미지 상에서 사변형의 좌표와 최종적으로 변형된 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 이미지 피라미드

이미지 피라미드 영상처리를 하다보면, 어떤 이미지를 확대 또는 축소 할 일이 빈번히 생긴다. 이를 위해 OpenCV에서는 pyrUp() 그리고 pyrDown() 함수를 제공한다. (비록 OpenCV 내부에서는 resize 함수를 그냥 이용하는 것 뿐이지만…) pyrDown(Mat src, Mat dst, Size dstsize, int borderType) pyrUp(Mat src, Mat dst, Size dstsize, int borderType) src : 입력 영상 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] Affine 변환

Affine 변환이란? Affine 변환은 선형 변환 중 하나로 점, 직선, 평면을 보존하며, 변환후에도 평행성이 보존되는 특징을 가지고 있다. Affine 변환을 통해 표현할 수 있는 변환은 다음과 같다. 회전 이동 확대 / 축소 반전 전단(Shearing) Affine 변환은 일반적으로 2*3행렬을 사용하며 두 이미지의 관계를 표현한다. 그 내용은 다음과 같다. 자세한 내용은 이전에 더보기…