반응형

image processing 5

[오픈소스 개발기] pypipo는 어떻게 만들었을까?

안녕하세요. 오픈소스 pypipo 메인테이너 입니다. pypipo 란? 어떤 이미지를 자동으로 피포페인팅 캔버스로 변환해주는 영상처리 기술 기반의 라이브러리 Github https://github.com/AutoPipo/pypipo GitHub - AutoPipo/pypipo: Python Library based on EasyPipo Python Library based on EasyPipo. Contribute to AutoPipo/pypipo development by creating an account on GitHub. github.com 지금부터 어떻게 이미지가 피포페인팅 캔버스로 변환되는지 그 과정에 대해 서술하려 합니다. 모든 image processing 알고리즘은 Github 내 lib..

Open Source 개발 2023.08.06

[오픈소스 개발기] pypipo : PEP8 및 클린코드 적용하기

내가 만든 프로젝트를 오픈소스로 공개하기로 했다. https://github.com/AutoPipo/pypipo GitHub - AutoPipo/pypipo: Python Library based on EasyPipo Python Library based on EasyPipo. Contribute to AutoPipo/pypipo development by creating an account on GitHub. github.com 오픈소스로 공개하기 이전에 내 코드들을 정리할 필요가 있었다. 코드 정리하기 우선 오픈소스를 컨트리뷰션 하기 위해서는 참고할만한 많은 것들이 필요하다. 하지만 그것보다 더 중요한 것은, 내 소스코드가 이해하기 쉬운가? 가독성이 좋은가? 남들이 보고 한 눈에 알아보거나 이해할 수..

Open Source 개발 2023.07.08

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