ホームページ > バックエンド開発 > Python チュートリアル > Pythonを使用して画像からテクスチャを抽出する方法

Pythonを使用して画像からテクスチャを抽出する方法

王林
リリース: 2023-08-17 08:31:50
オリジナル
2163 人が閲覧しました

Pythonを使用して画像からテクスチャを抽出する方法

Python を使用して画像からテクスチャを抽出する方法

はじめに: テクスチャ抽出は画像処理における重要なテクノロジであり、画像分析のために画像からテクスチャ特徴を抽出できます。分類、照合、その他のタスク。人気のプログラミング言語として、Python には PIL、opencv-python などの画像処理ライブラリとツールが豊富にあります。この記事では、Python を使用して画像からテクスチャを抽出する方法を紹介し、コード例を添付します。

1. 必要なライブラリをインストールしてインポートする
開始する前に、PIL、opencv-python、numpy などの必要なライブラリをインストールしてインポートする必要があります。これらは pip を使用してインストールできます:

$ pip install Pillow
$ pip install opencv-python
$ pip install numpy
ログイン後にコピー

必要なライブラリをインポートするコードは次のとおりです:

import cv2
import numpy as np
from PIL import Image
ログイン後にコピー

2. 画像の読み取りと表示
最初に、画像を読み取る必要があります。処理されて表示されます。ここでは自然風景の写真を選択し、「texture.jpg」として保存しました。

# 读取图片
image = Image.open("texture.jpg")
# 显示图片
image.show()
ログイン後にコピー

3. 画像をグレースケール画像に変換する
テクスチャ抽出は一般的にグレースケール画像に対して行われるため、読み取ったカラー画像をグレースケール画像に変換する必要があります。

# 转换为灰度图像
gray_image = image.convert("L")
# 显示灰度图像
gray_image.show()
ログイン後にコピー

4. グレー レベル共起行列 (GLCM) を計算する
グレー レベル共起行列はテクスチャ分析の一般的な方法であり、グレー レベルの変化と空間的関係を説明できます。ピクセルの間。

Python では、opencv-python ライブラリ (cv2) を使用して、グレー レベルの共起行列を計算できます。具体的な手順は次のとおりです。

  1. まず、後続の処理のためにグレースケール イメージを numpy 配列に変換する必要があります。
# 将灰度图像转换为numpy数组
gray_array = np.array(gray_image)
ログイン後にコピー
  1. 次に、cv2 ライブラリの cv2.calcHist() 関数を使用して、グレー レベルの共起行列を計算します。この関数には、グレースケール画像と、グレースケール レベルの数、ピクセル間隔、画像の高さと幅などのいくつかのパラメーターの入力が必要です。
# 计算灰度共生矩阵
glcm = cv2.calcHist([gray_array], [0], None, [256], [0, 256])
ログイン後にコピー
  1. 最後に、グレーレベルの共起行列を正規化して、その後の分析と特徴抽出を容易にすることができます。
# 规范化灰度共生矩阵
glcm /= glcm.sum()
ログイン後にコピー

5. テクスチャ特徴の抽出
グレー レベルの共起行列を取得した後、それを使用して、エネルギー、コントラスト、相関関係、均一性などの一般的なテクスチャ特徴を抽出できます。等

次に、いくつかの一般的なテクスチャ特徴の計算方法を示します。

  1. エネルギー (エネルギー): テクスチャの透明度を測定するために使用されます。計算式は、エネルギーは階調共起行列の各要素の二乗和に等しいというものです。
# 计算能量(energy)
energy = np.sum(glcm ** 2)
print("能量:", energy)
ログイン後にコピー
  1. コントラスト: テクスチャ内のグレー レベル間のコントラストを測定するために使用されます。計算式は、コントラストは、グレーレベル共起マトリックスの各要素の合計に、対応する位置のピクセル差を乗算したものに等しいというものです。
# 计算对比度(contrast)
contrast = np.sum(glcm * np.abs(np.arange(256) - np.arange(256)[:,None]))
print("对比度:", contrast)
ログイン後にコピー
  1. Correlation: テクスチャの線形相関を測定するために使用されます。計算式は、相関関係は、グレーレベルの共起行列の各要素の積と、対応する位置のピクセルの積の和に等しいというものです。
# 计算相关性(correlation)
correlation = np.sum(glcm * (np.arange(256) - np.mean(glcm)) * (np.arange(256)[:,None] - np.mean(glcm))) / (np.std(glcm) ** 2)
print("相关性:", correlation)
ログイン後にコピー
  1. 均一性: テクスチャ内のグレー レベル間の滑らかさを測定するために使用されます。計算式は、均一性がグレーレベル共起行列の各要素の合計を、対応する位置のピクセル差で割ったものに等しいというものです。
# 计算均匀性(homogeneity)
homogeneity = np.sum(glcm / (1 + np.abs(np.arange(256) - np.arange(256)[:,None])))
print("均匀性:", homogeneity)
ログイン後にコピー

6. まとめ
この記事では、Python を使用して画像からテクスチャを抽出する方法と、一般的なテクスチャ特徴を計算する方法を紹介します。一般的に使用される 2 つの画像処理ライブラリである PIL と opencv-python を使用すると、画像の読み取りと表示、画像のグレースケール画像への変換、画像のグレースケール共起行列の計算を簡単に行うことができます。グレーレベルの共起行列を取得した後、エネルギー、コントラスト、相関、均一性などの一般的なテクスチャ特徴を計算する方法も紹介しました。

テクスチャ分析はコンピュータ ビジョンにおける重要な研究方向であり、画像分析、分類、検索、その他のタスクにおいて重要な役割を果たします。この記事が、テクスチャ抽出テクノロジを学び、適用する読者にとって役立つことを願っています。

以上がPythonを使用して画像からテクスチャを抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート