【Python】RGB画像・デプス画像を正規化して色の変化を大きくする(torch・numpy)

プログラミング
スポンサーリンク

情報系大学生のゆうき(@engieerblog_Yu)です。

論文を書く際に、読者に値の変化をわかりやすくするためにデプス画像の正規化をしたのでログを残しておきます。

スポンサーリンク

全体のコード

全体のコードです。

奥行き画像について実装したものですが、RGB画像でもうまくいくと思います。

import torch
import numpy as np
from PIL import Image
from skimage import io
from torchvision.utils import save_image
import matplotlib.pyplot as plt

# 奥行き画像を読み込み
depth_img = io.imread("image.png")

# PytorchのTensorに変換
depth_tensor = torch.tensor(depth_img)

# 最大値から引く値
a = 10

# デプス値の最小値と最大値を求める
min_depth = depth_tensor.min().item()
max_depth = depth_tensor.max().item()-a

# デプス値を0~1にスケーリング
scaled_depth = (depth_tensor - min_depth) / (max_depth - min_depth)
scaled_depth[scaled_depth > 1] = 1

# 結果を表示
# print("Min depth: ", min_depth)
# print("Max depth: ", max_depth)
# print("Scaled depth: ", scaled_depth)

plt.imshow(scaled_depth, cmap='gray')
plt.savefig('torch_image.png', bbox_inches='tight')

正規化について

現在0~255(8bit)で表される値を、100~200にのみ着目したいとします。

以下で0~255の値を100~200のみの値にして、それ以外の値を切り落とすことができます。

min_depth = depth_tensor.min().item()+100
max_depth = depth_tensor.max().item()-55

scaled_depth[scaled_depth > 1] = 1
scaled_depth[scaled_depth < 0] = 0

正規化の結果

以下のように、デプス値の変化が小さくてよくわからない画像があります。

正規化を行うことで、変化を際立たせることができました。

関連記事

コメント

タイトルとURLをコピーしました