Pythonの実際の画像処理|グレー画像対数変換の非線形変換、ガンマ変換

著者|ヤンXiuzhang

ソース| CSDNブログ

Zebian | yugao

ヘッドフィギュア|視覚的に中国から支払わダウンロード

出品 | CSDN(ID:CSDNnews)

主に対数変換やガンマ変換などの画像階調処理のためのカスタムメソッドを使用して非線形変換に関する記事。この記事では、グレーの線形変換、私はあなたの助けを期待基本的な知識を説明します。

1.画像の階調非線形変換:DA = DB×DA / 255
2.画像階調対数変換
画像のガンマ変換、階調

画像グレー非線形変換:DB = DA×DA / 255

対数変換、変換のパワー、指数変換、サブセクション関数変換、主に非線形変換の次の3つの一般的なタイプの階調との間の非線形関係によって画像の階調処理を含む非線形変換グレー画像。

原画像の階調値が式DB = DA×DA / 255に従って非線形変換であり、次のように、コードは次のとおりです。

 1# -*- coding: utf-8 -*-
 2import cv2  
 3import numpy as np  
 4import matplotlib.pyplot as plt
 5
 6#读取原始图像
 7img = cv2.imread('miao.png')
 8
 9#图像灰度转换
10grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
11
12#获取图像高度和宽度
13height = grayImage.shape[0]
14width = grayImage.shape[1]
15
16#创建一幅图像
17result = np.zeros((height, width), np.uint8)
18
19#图像灰度非线性变换:DB=DA×DA/255
20for i in range(height):
21    for j in range(width):
22        gray = int(grayImage[i,j])*int(grayImage[i,j]) / 255
23        result[i,j] = np.uint8(gray)
24
25#显示图像
26cv2.imshow("Gray Image", grayImage)
27cv2.imshow("Result", result)
28
29#等待显示
30cv2.waitKey(0)
31cv2.destroyAllWindows()

出力の非線形変換のグレースケール画像の結果を以下に示します:

対数変換画像の階調

式に示すように、対数変換階調画像は、一般的に表されます:

比較例Cは一定尺度であり、DAは、元のグレー値画像であり、ターゲットトーン値がDBに変換されます。以下に示すような曲線の階調値の数の変化を示しています。

対数変換後の画像は、暗い領域のコントラストが改善されるように、画素値の低い領域での対数曲線の急勾配ので、高い勾配を有する領域の画素値は、小さいです。この変換は、高い値が暗い画素に圧縮された画像を拡張することにより、影の詳細を高めるために使用することができます。

拡張された低い階調値と圧縮の高い階調値の効果を達成するための対数変換は、広く周波数スペクトルに使用された画像を表示します。典型的なアプリケーションでは、ダイナミックレンジが広い0〜106が直接周波数スペクトルを表示することができ、装置の画像表示のダイナミックレンジは、多くの場合、これにより、シャドウの細部を大量に失う、要件を満たすことができない、フーリエスペクトルである。使用中の対数変換後、画像合理的にダイナミックレンジ圧縮リニア、明確に表示することができます。次の図では、対数変換後の形質転換されていないスペクトルが、それによって、シャドウの細部を高める、低階調領域のコントラストを増大させます。

次のコードは、対数変換画像の階調を実現します。

 1# -*- coding: utf-8 -*-
 2import numpy as np
 3import matplotlib.pyplot as plt
 4import cv2
 5
 6#绘制曲线
 7def log_plot(c):
 8    x = np.arange(0, 256, 0.01)
 9    y = c * np.log(1 + x)
10    plt.plot(x, y, 'r', linewidth=1)
11    plt.rcParams['font.sans-serif']=['SimHei'] #正常显示中文标签
12    plt.title(u'对数变换函数')
13    plt.xlim(0, 255), plt.ylim(0, 255)
14    plt.show()
15
16#对数变换
17def log(c, img):
18    output = c * np.log(1.0 + img)
19    output = np.uint8(output + 0.5)
20    return output
21
22#读取原始图像
23img = cv2.imread('test.png')
24
25#绘制对数变换曲线
26log_plot(42)
27
28#图像灰度对数变换
29output = log(42, img)
30
31#显示图像
32cv2.imshow('Input', img)
33cv2.imshow('Output', output)
34cv2.waitKey(0)
35cv2.destroyAllWindows()

図に示す処理機能の数の観点からの効果の後に、好ましくは対数変換が低く、全体のコントラストの階調値が低い画像強調です。

図2に対応する対数関数曲線。

ガンマ変換階調画像

また、指数変換または変換のガンマ変換電力として知られている、別の一般的な非線形変換グラデーションです。式に示すように、ガンマ変換、階調画像は、一般的に表されます:

  • γ> 1は、画像を高階調領域、低い階調圧縮部に延伸されたとき。

  • 場合γ<1は、下部領域、より高い階調圧縮部に画像階調を伸張します。

  • γ= 1のとき、階調変換は、直線的にこの時点で変更することにより、原画像は、線形です。

次のように実現コードのPythonガンマ変換、階調画像、主電源の関数呼び出しを達成します。

 1# -*- coding: utf-8 -*-
 2import numpy as np
 3import matplotlib.pyplot as plt
 4import cv2
 5
 6#绘制曲线
 7def gamma_plot(c, v):
 8    x = np.arange(0, 256, 0.01)
 9    y = c*x**v
10    plt.plot(x, y, 'r', linewidth=1)
11    plt.rcParams['font.sans-serif']=['SimHei'] #正常显示中文标签
12    plt.title(u'伽马变换函数')
13    plt.xlim([0, 255]), plt.ylim([0, 255])
14    plt.show()
15
16#伽玛变换
17def gamma(img, c, v):
18    lut = np.zeros(256, dtype=np.float32)
19    for i in range(256):
20        lut[i] = c * i ** v
21    output_img = cv2.LUT(img, lut) #像素灰度值的映射
22    output_img = np.uint8(output_img+0.5)  
23    return output_img
24
25#读取原始图像
26img = cv2.imread('test.png')
27
28#绘制伽玛变换曲线
29gamma_plot(0.00000005, 4.0)
30
31#图像灰度伽玛变换
32output = gamma(img, 0.00000005, 4.0)
33
34#显示图像
35cv2.imshow('Imput', img)
36cv2.imshow('Output', output)
37cv2.waitKey(0)
38cv2.destroyAllWindows()

次の図に示す図の効果は、画像コントラストにガンマ変換が低く、ガンマ変換を介して処理され、全体的な輝度値が画像強調効果の場合(カメラや露出オーバーによる)高いです。

図2に対応する図法則関数曲線。

日曜日の記事は、次のと女神に、本の鐘楼で書かれています。、ご容赦くださいに誤りや不備がある場合、私は、記事が役に立つことを願っています。

オリジナルリンク:

https://blog.csdn.net/Eastmount/article/details/88929290

【終わり】

推奨読書 

アップルは三月に安い新しいiPhoneを放棄していないか、リリースしました;ジア・ユエティングの応答ファミリ大きな主張を、MicrosoftはもはやVisual Basicの開発を継続|オタクの見出しを

US $ 7.558十億の契約!アメリカ最大5Gのミリ波周波数オークション

超軽量中国のOCR、垂直テキスト認識、ncnn推論のサポートは、総モデルは、17Mであります

やハッカーは、6日を戦います!

春ブートサービスの監視、ヘルスチェック、スレッド情報、JVMのヒープ情報、メトリック収集のための記事、動作を監視!

3「鳩」と、雷のネットワークは、メッセージングモードを暗号化されて変更する方法を説明します!

あなたは、私が好きなよう真剣に、すべてのポイントを見て

リリース1838元の記事 ウォンの賞賛40000 + ビュー1659万+

おすすめ

転載: blog.csdn.net/csdnnews/article/details/104912594