Kornia 0.6 : Tutorials (基本) : 色空間

Kornia 0.6 : Tutorials (基本) : 色空間 (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 10/21/2022 (v0.6.8)

* 本ページは、Kornia Tutorials の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

  • 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
  • sales-info@classcat.com  ;  Web: www.classcat.com  ;   ClassCatJP

 

 

Kornia 0.6 : Tutorials (基本) : 色空間

このチュートリアルでは kornia.color を使用して別の色空間から画像を変換する方法を学習していきます。

 

說明

画像は RGB かグレースケール空間內にロードされると仮定されます。

  1. 画像をロードするために OpenCV を使用します。
  2. BGR から RGB に変換します (OpenCV は画像を BGR 形式でロードすることに注意してください)。
%%capture
!wget https://github.com/kornia/data/raw/main/simba.png
from matplotlib import pyplot as plt
import cv2
import numpy as np

# load using opencv and convert to 
img_bgr: np.array = cv2.imread('simba.png', cv2.IMREAD_COLOR)
img_rgb: np.array = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb); plt.axis('off');
libpng warning: iCCP: known incorrect sRGB profile

 
別の方法として色変換を実行するのに kornia.color を使用できます。

  1. np.array を torch.Tensor に変換する。

  2. テンソルを RGB に変換する。

  3. 可視化のためにテンソルを numpy に変換し戻す。
%%capture
!pip install kornia
import torch
import kornia as K
import torchvision
/home/docs/checkouts/readthedocs.org/user_builds/kornia-tutorials/envs/latest/lib/python3.7/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm
# convert the numpy array to torch
x_bgr: torch.Tensor = K.image_to_tensor(img_bgr)

# to BGR
x_rgb: torch.Tensor = K.color.bgr_to_rgb(x_bgr)

# convert back to numpy and visualize
img_np: np.array = K.tensor_to_image(x_rgb)
plt.imshow(img_np); plt.axis('off');

kornia を使用して色変換をバッチモードで簡単に実行できます。

def imshow(input: torch.Tensor):
    out: torch.Tensor = torchvision.utils.make_grid(input, nrow=2, padding=5)
    out_np: np.array = K.tensor_to_image(out)
    plt.imshow(out_np); plt.axis('off');

# create a batch of images
xb_bgr = torch.stack([x_bgr, K.geometry.hflip(x_bgr), K.geometry.vflip(x_bgr), K.geometry.rot180(x_bgr)])
imshow(xb_bgr)

# convert to back to RGB
xb_rgb = K.color.bgr_to_rgb(xb_bgr)
imshow(xb_rgb)

# convert to grayscale
# NOTE: image comes in torch.uint8, and kornia assumes floating point type
xb_gray = K.color.rgb_to_grayscale(xb_rgb.float() / 255.)
imshow(xb_gray)

# convert to HSV
xb_hsv = K.color.rgb_to_hsv(xb_rgb.float() / 255.)
imshow(xb_hsv)
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).

 

以上