ホームページ >バックエンド開発 >Python チュートリアル >Python を使用して画像のヒストグラム均等化を実行する方法

Python を使用して画像のヒストグラム均等化を実行する方法

WBOY
WBOYオリジナル
2023-08-26 21:40:461389ブラウズ

Python を使用して画像のヒストグラム均等化を実行する方法

Python を使用して画像のヒストグラム イコライゼーションを実行する方法

はじめに:
ヒストグラム イコライゼーションは一般的な画像強調方法であり、ピクセル値は次のように調整されます。画像のグレースケール分布をより均一にし、画像のコントラストを高めます。この記事では、Python の OpenCV ライブラリを使用して画像のヒストグラム イコライゼーションを実装する方法を学びます。

1. 必要なライブラリをインポートする
まず、必要なライブラリを Python にインポートする必要があります: numpy は配列の処理に使用され、matplotlib は画像の表示に使用され、cv2 は画像処理に使用されます。

import numpy as np
import cv2
from matplotlib import pyplot as plt

2. 画像の読み込み
cv2.imread() 関数を使用して画像を読み込みます。この関数は、画像ファイルへのパスをパラメータとして受け取り、画像を表す配列を返します。

# 加载图像
img = cv2.imread('image.jpg', 0)

3. ヒストグラムの計算
cv2.calcHist() 関数を使用して画像のヒストグラムを計算します。この関数は、画像配列、チャネル インデックス、マスク、ヒストグラム サイズ、およびヒストグラム範囲を引数として受け取り、画像のヒストグラムを表す配列を返します。

# 计算直方图
hist = cv2.calcHist([img],[0],None,[256],[0,256])

4. 元の画像とヒストグラムを描画する
matplotlib ライブラリの plt.subplot() 関数を使用して、元の画像とヒストグラムをそれぞれ描画します。

# 绘制原始图像和直方图
plt.subplot(121), plt.imshow(img, 'gray')
plt.subplot(122), plt.plot(hist)

5. ヒストグラム等化の実行
cv2.equalizeHist() 関数を使用して、画像に対してヒストグラム等化を実行します。この関数はパラメータとして画像配列を受け取り、ヒストグラム等化後の画像配列を返します。

# 进行直方图均衡化
equ = cv2.equalizeHist(img)

6. イコライズされたイメージとヒストグラムを描画する
また、plt.subplot() 関数を使用して、イコライズされたイメージとヒストグラムをそれぞれ描画します。

# 绘制均衡化后的图像和直方图
plt.subplot(121), plt.imshow(equ, 'gray')
plt.subplot(122), plt.plot(hist)

7. 結果の表示
plt.show() 関数を使用して、描画されたすべてのイメージを表示します。

# 显示图像
plt.show()

8. 完全なコード例

import numpy as np
import cv2
from matplotlib import pyplot as plt

# 加载图像
img = cv2.imread('image.jpg', 0)

# 计算直方图
hist = cv2.calcHist([img],[0],None,[256],[0,256])

# 绘制原始图像和直方图
plt.subplot(121), plt.imshow(img, 'gray')
plt.subplot(122), plt.plot(hist)

# 进行直方图均衡化
equ = cv2.equalizeHist(img)

# 绘制均衡化后的图像和直方图
plt.subplot(121), plt.imshow(equ, 'gray')
plt.subplot(122), plt.plot(hist)

# 显示图像
plt.show()

結論:
Python の OpenCV ライブラリを使用すると、画像のヒストグラム イコライゼーションを簡単に実行できます。ヒストグラム等化は、画像のコントラストを高め、より鮮明で鮮やかにすることができるシンプルで効果的な方法です。この記事が画像処理に興味のある読者の助けになれば幸いです。

以上がPython を使用して画像のヒストグラム均等化を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。