[画像処理] matplotlibの

チュートリアルの用途は、プロッタコマンドインタフェースpyplotをmatplotlibの。インタフェースはグローバルな状態のまま、迅速かつ容易にグラフィックスのさまざまな設定を試してみるために有用です。別のアプローチは、それはまた、非常に強力で、しばしば大規模なアプリケーションの開発に適している、オブジェクト指向のインターフェイスです。あなたはオブジェクト指向のインターフェイスを学びたいのであれば、その後、私たちの使用上の注意事項は良い出発点です。

まず、スタート

今、私たちはコマンドアプローチを使用し続けてみましょう、最初に関連するライブラリーに導入

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

第二に、アレイnumpyの内に画像データ

画像データをロード枕ライブラリサポート。matplotlibのこのマシンはPNG画像をサポートしています。ユニットは、読み取りに失敗した場合、次のコマンドが表示枕に戻ります。

この例で使用した画像は、JPGファイルであるが、そのデータのためのあなたの「枕」要件ことを覚えておいてください。

これは、我々が扱っているイメージです。
ここに画像を挿入説明

今、私たちはメモリに彼をロードします。

img = mpimg.imread('cat.jpg')
print(img)
[[[248 247 252]
  [248 247 252]
  [248 247 252]
  ...
  [253 252 255]
  [253 252 255]
  [253 252 255]]

 [[248 247 252]
  [248 247 252]
  [248 247 252]
  ...
  [253 252 255]
  [253 252 255]
  [253 252 255]]

 [[248 247 252]
  [248 247 252]
  [248 247 252]
  ...

その出力は3次元配列です。各内側のリストは、ピクセルを表します。ここでは、RGBの画像には、3つの値があります。RGBA画像(Aはアルファまたは透明である)、値の4つの内部リストをそれぞれ有するが、輝度値を有する単純な画像(従って、それは代わりに3-D配列の唯一の2次元配列である)のために。RGBとRGBA画像、matplotlibのサポートのfloat32およびuint8のデータタイプの場合。グレーの場合は、matplotlibのは、唯一のfloat32をサポートしています。あなたの配列データは、以下の記述のいずれかを満たしていない場合は、再調整、そのサイズにする必要があります。

第三に、イメージはnumpyのアレイとして描かれます

我々は、次に、画像をレンダリングすることによって生成することができる(または導入することによって生成される)numpyのアレイにデータを格納することができます。matplotlibのは、これは実行する関数imshow()関数の使用です。ここでは、描画オブジェクトを取得します。このオブジェクトは、グラフからのプロンプトに簡単な方法を提供します。

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

img = mpimg.imread('cat.jpg')

imgplot = plt.imshow(img)
plt.show()

ここに画像を挿入説明

疑似カラー画像は、図1の実施形態に適用されます。

偽色は、より簡単に、コントラストや視覚データを強化するための便利なツールです。その一般的に貧弱なコントラスト - 特に便利であるデータのプレゼンテーションのためのプロジェクターを使用している場合。

擬似色、階調、輝度画像に関連付けられた単一のチャネル。我々は現在、RGB画像(配列)(上記コンテンツやデータを参照)を持って、我々は、データチャネルを選択することができます。

lum_img = img[:, :, 0]
plt.imshow(lum_img)
plt.show()

この時間は、私たちの猫は少し奇妙に見えます
ここに画像を挿入説明

輝度(2D、色なし)画像、色はデフォルトで適用される[図CMAP(またテーブル、LUTルックアップとして知られています)。デフォルト名はビリディスです。他の多くのオプションがあります。

plt.imshow(lum_img, cmap="hot")

ここに画像を挿入説明

また、あなたはまた、既存の印刷オブジェクトのカラーマップを変更するset_cmap()メソッドを使用することができ、ロールは、例えば、上記と一致しています。

imgplot = plt.imshow(lum_img)
imgplot.set_cmap('nipy_spectral')
plt.show()

ここに画像を挿入説明
他の多くのカラーマップのプログラムがあります。参照してくださいカラーチャートリストと画像を

カラーリファレンス

理解色は値が参考になるものを表します。私たちはあなたのグラフィックにカラーバーを追加することによってこれを行うことができます。

imgplot = plt.imshow(lum_img)
imgplot.set_cmap('hot')
plt.colorbar()
plt.show()

ここに画像を挿入説明

特定のデータ範囲をチェック

写真ベースのジュニアパートナーの少しのためには、画像のヒストグラムを知っている必要があります。時には、画像のコントラストを高めるためにしたい、または小さなまたは些細な色の違い、これらの色の変化を犠牲にして、コントラストの特定の領域を拡大します。ヒストグラムは興味深い領域を見つけるための優れたツールです。画像データを作成するためにヒストグラムを、あなたはHIST()関数を使用することができます。

plt.hist(img.ravel(), bins=256, range=(0.0, 255), fc='k', ec='k')

ここに画像を挿入説明

ほとんどの場合、「興味深い」部分の画像は、ピークの周りに配置され、そして追加のコントラスト及び/又は上限ピーククリッピングの下部領域によって得ることができます。私たちのヒストグラムでは、最後には(画像は白いものをたくさん持っている)、あまりにも有用な情報をいないようです。のが効果的ヒストグラムの一部を「増幅」するためには、上限を調整してみましょう。この目的のために、我々は関数imshowをCLIMするためのパラメータを渡します。また、も渡すことができますset_clim()オブジェクトの描画メソッドを呼び出すことによってこれを行うことができますclimパラメータを

imgplot = plt.imshow(lum_img, clim=(100, 255))

ここに画像を挿入説明

私たちは、一緒に完全なコードを二つの図を比較します:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

img = mpimg.imread('cat.jpg')
lum_img = img[:, :, 0]
fig1 = plt.figure()

plt.subplot(121)
plt.title('before')
imgplot = plt.imshow(lum_img)
plt.colorbar(orientation='horizontal')
plt.subplot(122)
plt.title('after')
imgplot2 = plt.imshow(lum_img, clim=(100, 255))
plt.colorbar(orientation='horizontal')
plt.show()

画像:
ここに画像を挿入説明

画像補間(スケーリング)

一般的なアプリケーションでは、我々は異なる数学的スキームに基づいて画素の値を増加して計算する(または削除)する必要があるので、画像サイズ、画素数が変わるを調整することです。ピクセルは離散し、スペースの不足しているので。補間は、あなたがスペースを埋めることの方法です。あなたがイメージを爆破するとき時々ピクセル化表示される場合があります理由です。元の画像と拡大画像との差分より大きくすると、効果がより明らかであろう。狭いイメージをしてみましょう。私たちは、実際には数ピクセルを残して、ピクセルを落としています。今、私たちはそれを描くとき、​​それは、画面上のデータのサイズに爆発します。古いピクセルは、もはやコンピュータは、スペースを埋めるために、画素を抽出する必要があり、存在しません。

私たちは、画像のサイズを変更する画像をロードするための枕ライブラリを使用します。

from PIL import Image

img = Image.open('cat.jpg')
img.thumbnail((64, 64), Image.ANTIALIAS)  # resizes image in-place
imgplot = plt.imshow(img)
plt.show()

ここに画像を挿入説明
我々は任意の補間パラメータを渡す)(関数imshowを与えていなかったため、双線形であるデフォルトの補間方法は、ありません。

私たちは、他の方法を試してみました。これは、補間なしで、「最も近い」です。

imgplot = plt.imshow(img, interpolation="nearest")

ここに画像を挿入説明
他のパラメータを試行し、それがマップ上で見ることができ、違いはありません、多くの場合、バイキュービック補間を使用すると、写真を拡大している - 人々がピクセル化するのではなくぼかす傾向があります:

imgplot = plt.imshow(img, interpolation="bicubic")

ここに画像を挿入説明


[OK]を感じた場合は、賞賛、関心のポイントを指し、そしてまた歓迎与える報酬についてのエディターの仕事をサポートするために
公開された63元の記事 ウォンの賞賛489 ビュー130 000 +

おすすめ

転載: blog.csdn.net/weixin_41045354/article/details/105159237