初めに(^ω^)
絵が描けると何かとはかどりますよね。絵が描ける人間になってみたいと思ったのですが、無理だったので自動で作れる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
差分処理したことによって線画が浮き出ますね!
参考文献
目次のようなもの
Re:ゼロから始める機械学習生活(深層学習もあるよ)
ここに進捗状況等を載せてます。
今まで書いたものを一覧にしていたりするので見てみてください!