Interface2017年05月号新画像処理101を読む

1-5 色数を減らす(ポスター風に変換する)「ポスタリゼーション」

#参考URL
#https://www.blog.umentu.work/python-opencv3%E3%81%A7%E3%83%9D%E3%82%B9%E3%82%BF%E3%83%AA%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%9A%8E%E8%AA%BF%E3%81%AE%E5%A4%89%E6%8F%9B/
#http://opencv.jp/opencv-2svn/cpp/operations_on_arrays.html

look_up_table = np.zeros((256, 1), dtype = 'uint8' ) 

for i in range(256):
    if i < 64:
    look_up_table[i][0] = 0
    elif i < 128:
    look_up_table[i][0] = 100
    elif i < 192:
    look_up_table[i][0] = 200
    else:
    look_up_table[i][0] = 300

# 画像の読み込み
img_src = cv2.imread("data/Mandrill.png",0)

# ポスタリゼーション
"""
LUT関数
ルックアップテーブルを用いて配列を変換します.

パラメタ:   
src – 各要素が 8 ビットの入力配列.
lut – 256 要素のルックアップテーブル.入出力配列がマルチチャンネルの場合,
ルックアップテーブルは,シングルチャンネル(この場合は,各チャンネルに対して同じテーブルを使います),
あるいは入出力配列と同じチャンネル数である必要があります.
関数 LUT は,ルックアップテーブルから取り出した値で出力配列を埋めます.
テーブルの要素を指定するインデックスには,入力配列の値が用いられます.
"""
img_dst = cv2.LUT(img_src, look_up_table)

#描画する
cv2.imshow("img_src",img_src)
cv2.imshow("img_dst",img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

#ヒストグラム
fig = plt.figure()
ax1 = fig.add_subplot(211) #総行数,総列数、サブプロット番号
ax2 = fig.add_subplot(212)

color_list = ["gray"]
for i,j in enumerate(color_list):
    hist = cv2.calcHist([img_src],[i],None,[256],[0,256])
    ax1.plot(hist,color = j)

for i,j in enumerate(color_list):
    hist = cv2.calcHist([img_dst],[i],None,[256],[0,256])
    ax2.plot(hist,color = j)

f:id:bitop:20180116072547p:plain

f:id:bitop:20180116072630p:plain

Interface2017年05月号新画像処理101を読む

1-4 定番エフェクトとネガポジを反転する「輝度反転」

img_src = cv2.imread("data/Mandrill.png")
#反転する
img_dst = 255 - img_src
#描画する
cv2.imshow("img_src",img_src)
cv2.imshow("img_dst",img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
#ヒストグラム
fig = plt.figure()
ax1 = fig.add_subplot(211) #総行数,総列数、サブプロット番号
ax2 = fig.add_subplot(212)

color_list = ["blue","green","red"]
for i,j in enumerate(color_list):
    hist = cv2.calcHist([img_src],[i],None,[256],[0,256])
    ax1.plot(hist,color = j)

for i,j in enumerate(color_list):
    hist = cv2.calcHist([img_dst],[i],None,[256],[0,256])
    ax2.plot(hist,color = j)

f:id:bitop:20180115053703p:plain

f:id:bitop:20180115053729p:plain

RGB要素ごとに明度が反転している
f:id:bitop:20180115053838p:plain

Interface2017年05月号新画像処理101を読む

1-3 カラー画像を白黒にする[グレー化処理]

#1-2で行った画像を分離して明度を調整して合成する方法ではなくcvの色変換関数を使った方法
img_src = cv2.imread("data/Mandrill.png")

#cvtColor関数を使用してグレイ画像を作成
img_dst = cv2.cvtColor(img_src,cv2.COLOR_RGB2GRAY) 

#描画する
cv2.imshow("img_src",img_src)
cv2.imshow("img_dst",img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

f:id:bitop:20180115055759p:plain

f:id:bitop:20180115055711p:plain

Interface2017年05月号新画像処理101を読む

1-2 ノシタルジックな雰囲気に変える「セピア・カラー処理」

img_src = cv2.imread("data/Mandrill.png")
#BGR画像を分離してグレイ画像を作成
img_gray = img_src[:,:,0] * 0.33 + img_src[:,:,1] * 0.33 + img_src[:,:,2] * 0.33 

#img_srcと同じ大きさのゼロ配列を作成してimg_dstを構成
img_dst = np.zeros_like(img_src)
#グレイ画像の明度を調整
img_dst [:,:,0] = img_gray * 0.55
img_dst [:,:,1] = img_gray  * 0.8
img_dst [:,:,2] = img_gray

#描画する
cv2.imshow("img_src",img_src)
cv2.imshow("img_dst",img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

f:id:bitop:20180115054041p:plain

f:id:bitop:20180115055440p:plain

Interface2017年05月号新画像処理101を読む

モジュールのインポート

import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

技1 色の変換

1-1 大胆に色を変える

img_src = np.ones((600,500,3)) * 255

#左上、右下の座標、カラー、線の太さを指定
cv2.rectangle(img_src,(100,25),(300,150),(255,0,0),-1)
cv2.rectangle(img_src,(100,25+200),(300,150+200),(0,255,0),-1)
cv2.rectangle(img_src,(100,25+400),(300,150+400),(0,0,255),-1)

#cv2.splitはRGB画像を3つに分離
img_bgr = cv2.split(img_src)
#blue->green,green->red,red->blue
#cv2.mergeはマージする
img_dst = cv2.merge((img_bgr[2],img_bgr[0],img_bgr[1]))
cv2.imshow("img_src",img_src)
cv2.imshow("img_dst",img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

f:id:bitop:20180113095127p:plain

f:id:bitop:20180113095154p:plain

Google Cloud Platformではじめる機械学習と深層学習を読む

7-9 TensotBoard

port 8082でWebpreviewを立ち上げると精度と損失が表示される
f:id:bitop:20171229110438p:plain

graphsを選択すると計算グラフが表示される f:id:bitop:20171229110652p:plain
distributions(分布)、この意味は不明
f:id:bitop:20171229111058p:plain histogramsこれも不明 f:id:bitop:20171229111330p:plain

Google Cloud Platformではじめる機械学習と深層学習を読む

DNNClassifierで簡単学習

正解率は0.9558とおなじ