반응형

Python tech/Computer Vision 7

[Python CV] 세그멘테이션을 통해 이미지 잘라내고 회전하기

이미지 데이터 전처리 (Image Preprocessing) 딥러닝을 활용하여 이미지 데이터를 훈련시키기 위해 필요한 과정 중 하나가 바로 이미지 데이터 전처리입니다. AI HUB의 축산물 품질 이미지 데이터를 다운로드하였습니다. https://aihub.or.kr/aidata/30733 축산물 품질(QC) 이미지 | AI 허브 구축 내용 및 제공 데이터량 aihub.or.kr 이 중에서 제가 사용한 데이터는 소고기와 돼지고기 데이터입니다. 아래 사진은 AI HUB에서 제공하는 육류 이미지 데이터의 예시입니다. 처음 원천 데이터를 그대로 fine tuning 시켰고, 그 결과 정확도가 50% 이상 오르지 않는 처참한 결과가 나왔습니다...;; 그래서 해결 방법을 고민하던 중, 이미지 데이터 전처리의 필요..

[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..

[camelot] read_pdf() 파라미터

Camelot이란? PDF 파일에서 표(Table, 이하 테이블)을 추출(Extract)해주는 Python 라이브러리 camelot을 사용하는 메인 방법은 read_pdf() 함수를 사용하는 것입니다. read_pdf()의 파라미터를 적절하게 적용시키면 PDF에서 테이블을 적절하게 추출하여 렌더링할 수 있습니다. 본 포스팅은 caemlot 공식 문서를 참고하였습니다. camelot-py.readthedocs.io/en/master/index.html 기본 사용법 camelot.read_pdf("./dir/file.pdf", pages="all") 첫 번째 인자로 pdf 파일 경로 두 번째 인자로 테이블을 추출할 페이지 범위를 설정해줍니다. 가장 기본이 되는 사용 방법입니다. 파라미터 우측에 [stream..

[camelot] PDF 테이블 인식 plot 기능 정리

Camelot이란? PDF 파일에서 표(Table, 이하 테이블)을 추출(Extract)해주는 Python 라이브러리 Camelot의 다양한 기능 중에서 plot 기능에 대해 알아보겠습니다. camelot.plot()은 camelot이 추출한 테이블을 여러 형태로 시각화해주는 기능입니다. 아래와 같은 총 6가지 기능이 있고, 하나씩 살펴보겠습니다. contour grid line joint text textedge 이 포스팅은 카멜롯 공식 문서를 참조하였습니다. camelot-py.readthedocs.io/en/master/user/advanced.html#visual-debugging 사용법 # 첫 번째 인자는 camelot table 객체 # 두 번째 인자는 kind에 plot 기능 중 하나를 설정..