「デジタル画像処理 - OpenCV/Python」連載(50) 非線形グレースケール変換

「デジタル画像処理 - OpenCV/Python」連載(50) 非線形グレースケール変換


本書の JD 割引購入リンク: https://item.jd.com/14098452.html
本書の CSDN 独占連載コラム: https://blog.csdn.net /youcans/category_12418787.html

ここに画像の説明を挿入します


第 7 章 画像のグレースケール変換


グレースケール変換は、グレースケール マッピング関数に従ってピクセルのグレースケール値を変更し、それによって画像のグレースケールのダイナミック レンジを変更します。グレースケール変換により、画像のダイナミック レンジが拡張され、画像のコントラストが強化され、画像がより鮮明で明白になります。


この章の概要

  • 画像の線形グレースケール変換を紹介し、グレースケールのダイナミック レンジに対する線形ストレッチの影響を理解します。
  • 対数変換、べき乗変換、区分的線形変換など、一般的に使用される非線形グレースケール変換方法を紹介します。
  • グレースケール変換を通じて画像レベルを調整し、画像の階調範囲とカラーバランスを理解して修正します。

7.3 非線形グレースケール変換

非線形グレースケール変換とは、非線形関数を使用して元の画像のグレースケール範囲を調整することを指します。一般的に使用される方法には、対数変換とべき乗則変換が含まれます。対数変換とべき乗変換の間のマッピング関係を図 7-4 に示します。

ここに画像の説明を挿入します
非線形グレースケール変換の演算中は、ピクセル値を実数として計算する必要があり、計算結果も実数となるため、画像のデータ型の変換に注意してください。


7.3.1 対数変換

対数変換とは、暗い領域のコントラストを強化し、画像の暗い細部を改善するために、狭い入力範囲の低いグレー レベルを広い範囲のグレー レベルにマッピングすることを指します。

対数変換は次の式で説明できます。

d s t = c ∗ l o g ( 1 + s r c ) dst = c*log(1+src)dst=clog(1+ソース)

式中の src と dst はそれぞれ元の画像と変換後の画像のグレースケール値を表し、c は比例係数です。

対数変換は、低階調の拡大と高階調の圧縮の効果が得られるため、スペクトル画像の表示に広く使用されており、代表的な用途としてフーリエスペクトルの表示があります。


7.3.2 べき乗則変換

ガンマ変換とも呼ばれるべき乗則変換は、暗い細部を改善し、白 (露出過剰) または暗すぎる (露出不足) の画像を補正します。

ガンマ変換は次の式で説明できます。

d s t = c ∗ s r c γ , γ > 0 dst = c*src^{\gamma}, \gamma>0dst=csrcγc>0

式では、src と dst はそれぞれ元の画像と変換後の画像のグレースケール値を表します。 γ \gamma γ はガンマ係数、c は比例係数です。

0 <; γ< 1 0<\ガンマ<1 0<;c<;1 の場合、画像の低いグレー レベルが引き伸ばされ、画像の高いグレー レベルが圧縮され、画像のコントラストが弱まります。 γ \ガンマ γ>1の場合、画像の高グレーレベルが伸ばされ、画像の低グレーレベルが圧縮され、画像のコントラストが強調される。

ガンマ変換は、非線形変換を通じて人間の視覚特性を補償し、グレースケール帯域幅の使用を最大限に活用できます。多くの撮影、表示、印刷デバイスの輝度曲線はガンマ曲線に準拠しているため、ガンマ変換はディスプレイで広く使用されています。機器の調整をガンマ補正といいます。


[ルーチン0704] グレースケール変換の対数変換

このルーチンは、フーリエ スペクトル表示における画像のグレースケール変化の対数変換を適用するものです。


# 【0704】灰度变换之对数变换
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

if __name__ == '__main__':
    gray = cv.imread("../images/Fig0602.png", flags=0)  # 读取为灰度图像

    fft = np.fft.fft2(gray)  # 傅里叶变换
    fft_shift = np.fft.fftshift(fft)  # 将低频部分移动到图像中心
    amp = np.abs(fft_shift)  # 傅里叶变换的频谱
    ampNorm = np.uint8(cv.normalize(amp, None, 0, 255, cv.NORM_MINMAX))  # 归一化为 [0,255]
    ampLog = np.abs(np.log(1.0 + np.abs(fft_shift)))  # 对数变换, c=1
    ampLogNorm = np.uint8(cv.normalize(ampLog, None, 0, 255, cv.NORM_MINMAX))

    plt.figure(figsize=(9, 3.2))
    plt.subplot(131), plt.title("1. Original"), plt.axis('off')
    plt.imshow(gray, cmap='gray', vmin=0, vmax=255)
    plt.subplot(132), plt.title("2. FFT spectrum"), plt.axis('off')
    plt.imshow(ampNorm, cmap='gray', vmin=0, vmax=255)
    plt.subplot(133), plt.title("3. LogTrans of FFT"), plt.axis('off')
    plt.imshow(ampLogNorm, cmap='gray', vmin=0, vmax=255)
    plt.tight_layout()
    plt.show()


プログラムの説明:
(1) 実行結果、フーリエ スペクトルの対数変換を図 7-5 に示します。図 7-5(2) に図 7-5(1) のフーリエスペクトル図を、図 7-5(3) に図 7-5(2) の対数変換像を示します。
(2) フーリエ スペクトルのダイナミック レンジが広いため、図 7-5(2) では画像の中心にある明るいスポットのみが表示されます (明るいスポットには 1 つのピクセルしかありません) 、実際には見ることができません)、多くの暗い詳細が失われます。
(3) 図 7-5(3) は、図 7-5(2) のダイナミックレンジを対数変換により非線形圧縮することで、スペクトル特性を鮮明に表示しています。


ここに画像の説明を挿入します

図 7-5 フーリエスペクトルの対数変換


著作権に関する声明:
youcans@xupt のオリジナル作品、再版にはオリジナルのリンクを付ける必要があります: (https://blog.csdn.net/youcans/article/details/134726151) ) 作成日:2023-12-01
Copyright 2023 youcans, XUPT

本書の CSDN 限定連載コラムをフォローしてください。
「デジタル画像処理 - OpenCV/Python」連載: https://blog.csdn.net/youcans/category_12418787.html< /a a>

おすすめ

転載: blog.csdn.net/youcans/article/details/134726151