アナログメーターの読取りは、前処理が重要です。

アナログメーターの読取りをする際は、人工知能で予測する前の工程で 予測精度の大半は決まってしまいます。人工知能自体の調整で出来る事は限られています。まずは、適切な撮影が重要です。人に判断がつかない画像では、人工知能も判断がつきません。次は、画像の前処理です。特にアナログメーターの針の向きが重要ですので、画像処理には定評のある、畳み込みニューラルネットワーク(CNN)と同様の前処理を行いましょう。手動で畳み込みを行うのか、人工知能に畳み込みをさせるかの違いだけです。

前処理によって 針の向きに合わせて強調したり消去したり、自由自在です。縦横斜めの畳み込みを前処理することで、人工知能の精度は格段に向上します。

import cv2
import numpy as np
gray = cv2.imread(“dx05.png”, 0)
import matplotlib.pyplot as plt
plt.imshow(gray,cmap = “gray”)
plt.show()
kernel = np.array([[-1, -1, -1],
[0, 0, 0],
[1, 1, 1]])
dst = cv2.filter2D(gray, -1, kernel)
cv2.imwrite(“./output02.png”, dst)
plt.imshow(dst,cmap = “gray”)
plt.show()
kernel = np.array([[-1, 0, 1],
[-1, 0, 1],
[-1, 0, 1]])
dst = cv2.filter2D(gray, -1, kernel)
cv2.imwrite(“./output03.png”, dst)
plt.imshow(dst,cmap = “gray”)
plt.show()
kernel = np.array([[0, -1, -2],
[1, 0, -1],
[2, 1, 0]])
dst = cv2.filter2D(gray, -1, kernel)
cv2.imwrite(“./output04.png”, dst)
plt.imshow(dst,cmap = “gray”)
plt.show()
kernel = np.array([[2, 1, 0],
[1, 0, -1],
[0, -1, -2]])
dst = cv2.filter2D(gray, -1, kernel)
cv2.imwrite(“./output00.png”, dst)
plt.imshow(dst,cmap = “gray”)
plt.show()
kernel = np.array([[-2, -1, 0],
[-1, 0, 1],
[0, 1, 2]])
dst = cv2.filter2D(gray, -1, kernel)
cv2.imwrite(“./output01.png”, dst)
plt.imshow(dst,cmap = “gray”)
plt.show()

カテゴリー: Uncategorized パーマリンク