Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのscikit-learnでグレースケール画像に特定の色合い(ティント)を追加する方法

グレースケール画像に特定の色合い(ティント)を加えたい場合は、元画像に対して「R」(赤)・「G」(緑)・「B」(青)の各チャンネルの値を変更して適用することで実現できます。

以下は、Pythonでこの処理を実装したサンプルプログラムです。なお、実際の画像処理にはscikit-learnエコシステムの画像処理ライブラリであるscikit-image(skimage)を使用しています。

サンプルコード

import matplotlib.pyplot as plt
from skimage import io, color

path = "path to puppy_1.jpg"
orig_img = io.imread(path)
grayscale_img = color.rgb2gray(orig_img)
image = color.gray2rgb(grayscale_img)

red_multiplier = [0.7, 0, 0]
yellow_multiplier = [1, 0.9, 0]

fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(8, 4),
                               sharex=True, sharey=True)

ax1.imshow(red_multiplier * image)
ax1.set_title('Original image')
ax2.imshow(yellow_multiplier * image)
ax2.set_title('Tinted image')

出力結果

Pythonのscikit-learnでグレースケール画像に特定の色合い(ティント)を追加する方法

コードの解説

  • まず、必要なパッケージ(matplotlib、scikit-imageなど)を環境にインポートします。

  • 画像が保存されているファイルパスを定義します。

  • 「imread」関数を使用して、指定したパスから画像を読み込みます。

  • 「rgb2gray」関数を使用して、画像をRGBカラースペースからグレースケールへ変換します。

  • 「gray2rgb」関数を使用して、グレースケール画像を再びRGB形式(3チャンネル構造)に戻します。色合いを適用するには3チャンネルが必要になるためです。

  • 乗数(マルチプライヤー)としてR・G・Bの係数を定義し、画像に掛け合わせることで目的の色合いを適用します。例えば [0.7, 0, 0] は赤チャンネルのみ70%残すため赤みがかった色調に、[1, 0.9, 0] は赤と緑を残して青を消すため黄色みがかった色調になります。

  • matplotlibの「imshow」関数を使用して、処理前の画像と色合いを適用した画像を並べて表示します。

  • 最終的な出力がコンソール上に表示されます。

  1. Pythonでscikit-learnライブラリを使って画像の解像度を取得する方法

    はじめに:データ前処理とはデータ前処理とは、さまざまなリソース(または単一のリソース)から収集したすべてのデータを、共通のフォーマットや統一されたデータセットにまとめる作業のことです。現実世界のデータは決して完璧ではないため、欠損セル、エラー、外れ値、列間の不整合などが含まれている可能性があります。また、画像が正しく配置されていなかったり、不鮮明だったり、ファイルサイズが過大だったりすることもあります。前処理の目的は、こうした不整合やエラーを取り除き、データを分析可能な状態に整えることにあります。画像の解像度を取得するには、組み込み関数「shape」を使用します。画像を読み込むと、そのピクセル

  2. PythonでWord文書の段落を作成し、画像を挿入する方法

    はじめに データエンジニアリングのスペシャリストとして、テスターからMicrosoft Word形式のテスト結果を受け取ることがよくあります。ため息が出るほど…スクリーンショットや非常に長い段落など、大量の情報をWord文書に詰め込んでくるのです。 先日、テストチームから「ツールが生成したテキストと画像(自動スクリーンショットで取得したもの。本記事では扱いません)を文書に挿入するプログラム」の作成を依頼されました。 MS Wordは他のドキュメント形式と異なり、ページという概念を持たず、残念ながら段落ベースで動作します。そのため、改行(ブレーク)やセクションを活用して、文書を適切に分割する必