キャリブレーションAI Note
キャリブレーションAI
import numpy as np
import cv2
import tensorflow as tf
from keras import layers, models
# モデルの定義
def distortion_correction_model(input_shape):
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=input_shape),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(2) # 出力は歪み補正パラメータ
])
return model
# モデルのコンパイル
model = distortion_correction_model(input_shape=(height, width, channels))
model.compile(optimizer='adam', loss='mse')
# モデルのトレーニング
model.fit(train_distorted_images, train_undistorted_images, epochs=10, validation_data=(val_distorted_images, val_undistorted_images))
# モデルの評価
test_loss = model.evaluate(test_distorted_images, test_undistorted_images)
# モデルの保存
model.save("distortion_correction_model.h5")
execute.py
import numpy as np
import cv2
import tensorflow as tf
from keras import layers, models
# モデルの定義
def distortion_correction_model(input_shape):
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=input_shape),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(2) # 出力は歪み補正パラメータ
])
return model
# 歪み補正モデルのコンパイル
model = distortion_correction_model(input_shape=(height, width, channels))
model.compile(optimizer='adam', loss='mse')
# モデルのトレーニング
model.fit(train_distorted_images, train_undistorted_images, epochs=10, validation_data=(val_distorted_images, val_undistorted_images))
# 歪み補正関数の定義
def correct_distortion(image, model):
# 画像をモデルに入力し、歪み補正パラメータを取得
distortion_params = model.predict(np.array([image]))
# 歪み補正パラメータを使用して画像を補正
corrected_image = cv2.undistort(image, np.array([distortion_params]), None)
return corrected_image
# キャリブレーション画像の読み込み
calibration_image = cv2.imread("calibration_image.jpg")
# 歪み補正
corrected_calibration_image = correct_distortion(calibration_image, model)
# 歪み補正された画像の表示
cv2.imshow("Corrected Calibration Image", corrected_calibration_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
変更予定 あくまでnote
この記事が気に入ったらサポートをしてみませんか?