기계 학습을 이용한 컬러 일러스트 선화 자동 생성

처음에(^ω^)



그림을 그릴 수 있으면 뭔가는 어딘지 모릅니다. 그림을 그릴 수 있는 인간이 되고 싶다고 생각했습니다만, 무리였으므로 자동으로 만들 수 있는 AI를 작성해 보았습니다. 어려웠지만 즐거웠기 때문에 기뻤습니다.

작성한 소스 코드



#-----------------------------------------
#線画の自動生成
#-----------------------------------------
import numpy as np
import cv2

#保存先指定
file = './text11.txt'

#カラーで読み込み
img = cv2.imread('./shigure.png')
#グレースケールで読み込み
img2 = cv2.imread('./shigure.png',0)

#Numy配列に保存
im = np.array(img2)

#閾値設定による二値化処理
Threshold = 120
im[im < Threshold] = 0
im[im >= Threshold] = 255

#特徴量フィルター生成
#フィルター1
kernel = np.array([[0, -1, 0],
                   [-1, 4, -1],
                   [0, -1, 0]], dtype=np.uint8)

#膨張処理
dilation = cv2.dilate(im, kernel, iterations = 1)

#差分処理(膨張処理を行ったデータからグレースケール画像を引く)
Difference = dilation - im

#色反転
Difference[:, :] = 255 - Difference[:, :]

#テキスト出力
np.savetxt(file, Difference, fmt="%0.0f", delimiter=",")

#出力
print (Difference)

#画像出力
cv2.imwrite('./Difference.png', Difference)

코드 해설



코드 실행 결과



원본 이미지


선화 이미지


원본 이미지


선화 이미지


코드 해설 저것 이것



특징량 필터 생성


#特徴量フィルター生成
#フィルター1
kernel = np.array([[0, -1, 0],
                   [-1, 4, -1],
                   [0, -1, 0]], dtype=np.uint8)

필터를 생성하고 있습니다. 내용의 숫자를 다양하게 보면 재미있을지도

팽창 처리


#膨張処理
dilation = cv2.dilate(im, kernel, iterations = 1)

선의 부분을 굵게하고 있습니다. 전경 물체를 팽창!

차이 처리


#差分処理(膨張処理を行ったデータからグレースケール画像を引く)
Difference = dilation - im

차분 처리한 것에 의해 선화가 떠오르네요!

참고문헌



OpenCV-Python 자습서 문서

목차와 같은 것



Re: 처음부터 시작하는 기계 학습 생활(심층 학습도 있어)
여기에 진척 상황 등을 실고 있습니다.
지금까지 쓴 것을 나열하고 있으니 봐주세요!

좋은 웹페이지 즐겨찾기