반응형

opencv 4

[Python opencv] K-means 활용, 이미지 색상 개수 줄이기

Using cv2.kmeans, reduce number of color on image 지난번 "이미지 그림화" 포스팅에 더 개선된 알고리즘을 적용합니다. 실행 시간도 단축되었고, 그림화 및 색상 단순화 효과도 성능이 개선되었습니다. 지난 포스팅 https://tech-diary.tistory.com/19 K Means 알고리즘 ? k-means 알고리즘은 수많은 데이터를 k개로 클러스터링(clustering = 군집화) 해주는 알고리즘 다양한 데이터셋에 적용이 가능합니다. 비지도 학습 기반 알고리즘이기 때문에, 별도의 훈련 과정이 필요하지 않습니다. 더 자세히 알고 싶다면.... 위키백과 참고하시면 되겠습니다. https://ko.wikipedia.org/wiki/K-%ED%8F%89%EA%B7%A0..

[Python opencv] cv2 색상 구분 기준으로 라인 그리기

이미지에서 색상이 변경되는 곳에 점을 찍어주어 라인을 그려주는 방법입니다. 이미지에는 수십만 가지 색상이 존재합니다. 아무리 간단해 보이는 이미지도 수만 가지 이상은 됩니다. 따라서 색상을 기준으로 라인을 그리기 위해서 우선, 색상 단순화가 먼저 진행되어야 합니다. 색상 단순화 알고리즘은 여기서 확인할 수 있습니다. 링크 라라랜드 포스터를 가지고 실험을 해보겠습니다. 우선, 이미지에서 색상을 단순화시킵니다. 32개의 색상으로 단순화시킨 결과입니다. 이미지가 그림처럼 변환된 모습을 볼 수 있습니다. 그럼 이제 색상 변경 지점을 기준으로 선을 그려보겠습니다. import cv2 import numpy as np def drawLine(colorImage): # 라인 그려줄 캔버스 (input 이미지와 sha..

[Python OpenCV] 이미지를 그림화 하기 (색 일반화)

OpenCV를 활용하여 이미지를 그림처럼 바꾸어주는 방법 먼저 이미지를 읽어줍니다. import cv2 import numpy as np image = cv2.imread("./test.jpg") 이미지를 Blur 처리 해주어야 합니다. Blur 종류에는 여러가지가 있는데, 이미지에서 라인(경계선)을 살리기 위해 bilateralFilter 방식을 적용합니다. 함수를 만들어 주겠습니다. def blurring( image, radius = 10, sigmaColor = 50 ) : qimg = image.copy() #이미지 복사 # 이미지 크기에 따라 blur 효과의 정도를 달리합니다. sigmaColor += (qimg.shape[1] * qimg.shape[0]) // 100000 radius +=..

[camelot] line_scale이란? (opencv로 라인 추출)

camelot은 사용자가 조절할 수 있는 파라미터가 다양합니다. 관련 포스팅 : tech-diary.tistory.com/13 파라미터를 조정해서 PDF에서 테이블을 조금 더 정확하게 추출할 수 있습니다. 파라미터는 lattice와 stream 방식에서 조금 차이가 있는데 그 중 lattice 방식에서 line_scale 이라는 이름의 파라미터가 있습니다. 이번 포스팅에서는 이 line_scale 이란 녀석이 어떤 목적인지, 어떻게 작동하는지를 분석해보겠습니다. line_scale이 사용되는 곳은 parser.Lattice() 클래스 내부의 _generate_table_bbox() 함수 내부입니다. path : parser > class Lattice > def _generate_table_bbox fr..