[안드로이드로 배우는 OpenCV] 레이블링(Labeling)

레이블링(Labeling) 레이블링이란 일반적으로 이진화 된 이미지에서 연속된 픽셀에  대해 고유한 번호를 매기는 작업을 의미 한다. 이진화에 대한 내용은 이전 포스팅에서 확인할 수 있다. 이미지의 이진화 자동 이진화 임계값 결정(Otsu) 지역 이진화 적응형 이진화 레이블링을 수행하면 객체 단위로 이미지를 분석할 수 있게 된다. 객체의 위치, 크기, ROI 추출, 모양 분석등이 가능해진다. 더보기…

[안드로이드로 배우는 OpenCV] 적응형 이진화(Adaptive Threshold)

적응형 이진화 지난 포스팅에서 Otsu 및 지역 이진화를 적용 했을 때 다음과 같은 결과물을 얻는 것을 확인했다. Otsu나 지역 이진화를 통한 방법은 모든 이미지에서, 특히 이미지가 서로 다른영역에서 다른 밝기값을 가질 때 잘 수행되지 않는다. 이러한 경우 적응형 이진화를 진행할 수 있다. 적응형 이진화란 이미지의 각 픽셀에 대해 개별적으로 임계값을 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 지역 이진화

지역 이진화 지난 포스팅에서 Otsu 함수를 통해 임계값을 자동으로 결정하고 이미지를 이진화하는 방법에 대해서 알아보았다. 단순히 Otsu를 적용하는 것으로 객체와 배경을 분리할 수 있으면 좋겠지만 현실은 그렇지 않다. 다음의 쌀알이 포함된 이미지를 살펴보자. 쌀알 이미지에 Otsu 함수를 적용하면 다음과 같은 이진화 된 이미지를 얻을 수 있다.   큰 문제는 없어보인다. 더보기…

안드로이드 프로젝트 import 시 구글 리포지토리에 연결되지 않을 때

IOException: https://dl.google.com/android/repository/addons_list-x.xml java.net.ConnectException: Connection refused (Connection refused) 안드로이드 스튜디오에서 위와 같은 메시지를 출력 할 때 조치해볼 수 있는 내용은 다음과 같다. 우선 안드로이드 스튜디오와 SDK 툴들을 최신 상태로 만든다.  AGP 7.0(Android Gradle Plug-in) 이후에는 Gradle JDK버전을 11 이상으로 설정해야 하니 유의하자. 그래도 엑세스가 안되면, 방화벽 문제일 수 있으므로 방화벽을 해제 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 이미지의 이진화 – Otsu(자동 임계값 설정)

이진화 임계값 결정 지난 포스팅에서 임계값을 통해 이미지를 이진화 하는 방법에 대해서 알아보았다. 이진화 된 이미지를 얻을 때 가장 중요한 점은 바로 임계값을 어떻게 또는 무엇으로 결정하냐는 것이다. 임계값을 조금씩 변경하면서 사람의 눈으로 확인하여 가장 좋은 결과값을 얻는 것도 하나의 방법이지만 이러한 반복적인 작업 없이도 자동으로 적절한 임계값을 한번에 찾을 더보기…

[안드로이드로 배우는 OpenCV] 이미지의 이진화

이미지의 이진화(Binarization)란? 이미지의 픽셀 값을 0 또는 255로 변환하는 연산을 말한다. 변환된 이진 이미지는 다음과 같은 목적을 수행하는데 적합하다. 배경(Background)과 객체(Object) 구분하기 관심 영역과 비관심 영역 가르기 이미지의 이진화는 일반적으로 회색조(grayscale) 이미지로 하며, 픽셀의 값을 결정하기 위해 임계값(threshold)을 정하게 된다.  Threshold 임계값(T)를 통해 이미지(I)의 픽셀값을 0 또는 255로 결정할텐데 이를 더보기…

글쓴이 Charlezz,

고전암호 구현해보기(시저 암호, 비즈네르 암호)

고전암호 고전암호(Classical cipher)는 과거에 사용되었으나 지금은 사용하지 않는 암호의 형태이다. 지금은 컴퓨터로 비트를 다루는 암호를 사용하지만 과거에는 사람이 암호화와 복호화를 해야했기 때문에 고전암호는 오늘날의 암호보다 훨씬 단순하다.  고전암호에서 가장 대표적인 스키테일 암호, 시저 암호, 비즈네르 암호에 대해서 알아보자. 스키테일 암호(Scytale cipher) 고대 그리스의 역사학자 플루타르크에 따르면 약 2,500년 전 그리스 더보기…

글쓴이 Charlezz,

KAPT보다 2배 더 빠르게, 코틀린을 위한 KSP

KSP(Kotlin Symbol Processing) KSP(Kotlin Symbol Processing)는 코틀린에서 경량화 된 컴파일러 플러그인을 개발할 수 있는 API다.  학습곡선을 최소한으로 줄이고, 코틀린의 기능을 활용할 수 있는 단순화된 API를 제공한다. KSP는 코틀린 1.4.30 버전 이상부터 호환되며, KAPT와 비교했을 때 KSP를 사용하는 애노테이션 프로세서는 최대 2배 더 빠르게 실행할 수 있다. 자세한 내용은  KSP Github 더보기…

[안드로이드로 배우는 OpenCV] 허프 변환 – 원 검출 하기

허프 원 변환(Hough Circle Transform;CHT) 지난 포스팅에서 직선을 검출하는 허프 선 변환에 대해서 알아보았다. 이번 포스팅에서는 허프 변환을 통해 원을 검출하는 방법에 대해서 알아본다. 우선 우리가 알고 있는 원을 표현하는 표준 원 방정식은 다음과 같다. (x-a)2 + (y-b)2 = r2 r은 반지름(radius)을 의미하고, (a,b)은 원의 중심을 의미 한다. 이 방정식에서 원을 표현하기 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 허프 변환 – 직선 검출 하기

허프 변환(Hough Transform) 허프 변환은 이미지에서 선과 원 같은 단순한 형태를 찾는 방식이다. 이진화 된 이미지에서 직선을 찾을 때 상대적으로 빠른 검출을 보여준다. 허프 선 변환(Hough line transform) 허프 선 변환의 기본 개념은 2차원 이미지 상의 어떠한 점은 선의 일부라는 사실을 기초로 한다. 선분의 기울기를 a라고 가정하고 y절편을 b라고 할 더보기…

글쓴이 Charlezz,