[youcansの200のOpenCVルーチン]140。照明を修正するためのグレースケールボトムハット変換

「youcans'OpenCVルーチン200」シリーズへようこそ。継続的に更新される「youcans'OpenCV学習コース」シリーズに
注目して、引き続き更新してください。


[youcansの200のOpenCVルーチン]140。照明を修正するためのグレースケールボトムハット変換


グレースケール形態は、形態学的操作をバイナリ画像からグレースケール画像に拡張します。灰色の形態処理には、侵食、拡大、開放操作、閉鎖操作、トップハット操作、ローハット操作などの操作もあり、画像の平滑化、画像の強調、画像のセグメンテーション機能を実現できます。

画像のピクセルのグレー値は高さと見なされ、グレーレベルが異なると高さが異なり、画像全体が起伏のある地形図のようになります。明るい領域(大きなグレー値)は山に相当し、暗い領域(小さなグレー値)は深い谷に相当し、エッジ領域、つまり光と闇の接合部は崖に相当します。


5.3グレースケールトップハット変換とグレースケールボトムハット操作

画像の減算を開閉操作と組み合わせて、トップハット変換とボトムハット変換を取得します。

グレースケール画像fのローハット変換は、画像閉鎖操作から元の画像を差し引いた結果として定義されます。

B hat(f)= f∙b− f =(f⊕b)⊖b− f B_ {hat}(f)= f \ bullet b --f =(f \ oplus b)\ ominus b --fBh at _f =fbf=fb bf

閉じる操作では、明るい背景の下の暗い領域を削除できます。また、ボトムハット変換では元の画像の暗い領域を取得できるため、ブラックボトムハット変換とも呼ばれます。

OpenCVの関数cv.morphologyExは、画像のトップハット操作とボトムハット操作を実現できます。パラメーターopは、それぞれMORPH_TOPHATとMORPH_BLACKHATに設定する必要があります。


ルーチン10.31:グレースケールボトムハットトランスフォーム補正照明

背景からオブジェクトを抽出するには、均一な照明が重要です。同様に、ボトムハット変換の重要な使用法は、不均一な照明の影響を修正することです。これは、明るい背景に対して暗い領域を削除して、元の画像に暗い領域をもたらすために使用できます。

    # 10.31: 灰度底帽变换
    imgGray = cv2.imread("../images/imgHat01.png", flags=0)  # flags=0 灰度图像

    # 直接用 Otsu 最优阈值处理方法进行二值化处理
    ret, imgBin = cv2.threshold(imgGray, 127, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)  # 二值化处理,白色背景

    # 底帽变换后再用 Otsu 最优阈值处理方法进行二值化处理
    element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (55, 55))  # 圆形结构元
    imgBhat = cv2.morphologyEx(imgGray, cv2.MORPH_BLACKHAT, element)  # 底帽运算
    ret, imgBhatBin = cv2.threshold(imgBhat, 50, 255, cv2.THRESH_BINARY |cv2.THRESH_OTSU)  # 二值化处理,白色背景
    # 圆环表面有很多黑色噪点,通过闭操作去除
    element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))  # 圆形结构元
    imgSegment = cv2.morphologyEx(imgBhatBin, cv2.MORPH_CLOSE, element)  # 闭运算

    plt.figure(figsize=(9, 6))
    plt.subplot(221), plt.title("Origin"), plt.axis('off')
    plt.imshow(imgGray, cmap='gray', vmin=0, vmax=255)
    plt.subplot(222), plt.title("Otsu segment"), plt.axis('off')
    plt.imshow(imgBin, cmap='gray', vmin=0, vmax=255)
    plt.subplot(223), plt.title("BlackHat image"), plt.axis('off')
    plt.imshow(imgBhat, cmap='gray', vmin=0, vmax=255)
    plt.subplot(224), plt.title("Tophat segment"), plt.axis('off')
    plt.imshow(imgSegment, cmap='gray', vmin=0, vmax=255)
    plt.tight_layout()
    plt.show()

ここに画像の説明を挿入


(このセクションの終わり)


著作権表示:

Youcans @ xuptのオリジナル作品、再版にはオリジナルのリンクを付ける必要があります:(https://blog.csdn.net/youcans/article/details/123565844)

Copyright 2022 youcans、XUPT
Crated:2022-3-24


「youcans'OpenCVルーチン200」シリーズへようこそ。継続的に更新される「youcans'OpenCV学習コース」シリーズに
注目して、引き続き更新してください。

[YoucansのOpenCVルーチン200]01.画像の読み取り(cv2.imread)
[youcansのOpenCVルーチン200] 02.画像の保存(cv2.imwrite)
[youcansのOpenCVルーチン200] 03.画像の表示(cv2.imshow)
[youcansのOpenCVルーチン200] 04. matplotlib(plt.imshow)
[youcansのOpenCVルーチン200] 05.画像属性(np.shape)
[youcansの200OpenCVルーチン]06。ピクセル編集(img.itemset)
[youcansのOpenCVルーチン200] 07.画像の作成(np.zeros)
[youcansのOpenCVルーチン200] 08.画像の複製(np.copy)
[YoucansのOpenCVルーチン200] 09.画像のトリミング(cv2.selectROI)
[youcansのOpenCVルーチン200] 10.画像のステッチ( np.hstack)
[youcansのOpenCVルーチン200] 11.画像チャネルの分割(cv2.split)
[youcansの200OpenCVルーチン]12。画像チャネルのマ​​ージ(cv2.merge) [youcans
の200OpenCVルーチン]13。画像の追加(cv2 .add)
[youcansの200のOpenCVルーチン] 14.画像とスカラーの追加(cv2.add)
[youcansの200のOpenCVルーチン]15。画像の加重加算(cv2.addWeight)
[youcansの200のOpenCVルーチン]16。異なるサイズの画像の追加[youcansの
200のOpenCVルーチン]17。2つの画像勾配切り替え
[youcansのOpenCVルーチン200 ]18.画像マスクの追加
[youcansのOpenCVルーチン200]19.画像円形マスク
[youcansのOpenCVルーチン200]20.画像プレスビット操作
[youcansのOpenCVルーチン200]21.画像オーバーレイ
[youcansのOpenCVルーチン200]22.画像追加非-中国語のテキスト
[youcansのOpenCVルーチン200]23.画像の追加中国語のテキスト
[youcansの200OpenCVルーチン]24。画像のアフィニティ変換
[youcansのOpenCVルーチン200]25.画像の変換
[youcansのOpenCVルーチン200]26.画像の回転(中心原点)
[youcansの200OpenCVルーチン]27。画像の回転(任意の点を中心とする)
[youcansのOpenCVルーチン200] 28.画像の回転(直角回転)
[youcansのOpenCVルーチン200] 29.画像の反転(cv2.flip)
[youcansの200のOpenCVルーチン]30。画像スケーリング(cv2.resize)
[YoucansのOpenCVルーチン200]31.画像ピラミッド(cv2.pyrDown)
[youcansのOpenCVルーチン200] 32.画像の歪み(ミスカット)
[youcansのOpenCVルーチン200]33.画像複合変換
[youcansのOpenCVルーチン200]34.画像投影変換
[youcansのOpenCVルーチン200]35.画像投影変換(境界の塗りつぶし)
[youcansのOpenCVルーチン200]36.カルテシアン座標と極座標変換
[youcansのOpenCVルーチン200]37.画像のグレースケール処理と2値化
[youcansのOpenCVルーチン200]38。画像の逆色変換(画像反転)
[youcansのOpenCVルーチン200記事]39。画像グレースケールの線形変換
[youcansのOpenCVルーチン200記事]40。画像の断片的な線形グレースケール変換
[youcansのOpenCVルーチン200記事]41。画像グレースケール変換(灰色学位レベルの階層化)
[youcansのOpenCVルーチン200] 42.画像のグレースケール変換(ビット平面の階層化)
[youcansのOpenCVルーチン200] 43.画像のグレースケール変換(対数変換)
[Youcans200のOpenCVルーチンの記事]44。画像のグレースケール変換(ガンマ変換)
[youcansのOpenCVルーチンの200記事]45。画像のグレースケールヒストグラム
[youcansのOpenCVルーチンの200記事]46。ヒストグラム等化の変更
[YoucansのOpenCVルーチン200記事]47。画像強調-ヒストグラムマッチング
[youcansのOpenCVルーチン200記事]48。画像強調-色ヒストグラムマッチング
[youcansのOpenCVルーチン200記事]49。画像強調-ローカルヒストグラム処理
[youcansのOpenCVルーチン200記事] ]50.画像強調-ヒストグラム統計画像強調
[youcansのOpenCVルーチン200記事]51。画像強調-ヒストグラム逆追跡
[youcansのOpenCVルーチン200記事]]52.画像相関および畳み込み操作
[youcansのOpenCVルーチン200]53.Scipyの実装2次元画像畳み込み
[youcansのOpenCVルーチン200]54.OpenCVは画像2次元畳み込みを実装します
[youcansのOpenCV200ルーチン]55。分離可能な畳み込みカーネル
[youcansのOpenCVルーチン200]56.ローパスボックスフィルター
[youcansのOpenCVルーチン200] 57.ローパスガウスフィルター
[youcansのOpenCV例]Cheng200記事]58。非線形フィルタリング-メディアンフィルタリング
[youcansのOpenCVルーチン200記事]59。非線形フィルタリング-バイラテラルフィルタリング
[youcansのOpenCVルーチン200記事]60。非線形フィルタリング-共同バイラテラルフィルタリング
[OpenCVルーチンの200記事]61。ガイド付きフィルター
[YoucanのOpenCVルーチンの200記事]62。画像の鮮明化-パッシベーションマスキング
[YoucansのOpenCVルーチン200]63.画像の鮮鋭化-ラプラシアン演算子
[youcansのOpenCVルーチン200]64.画像の鮮鋭化-Sobel演算子
[youcansのOpenCVルーチン200]65.画像の鮮鋭化-Scharr演算子
[youcansのOpenCVルーチン200]66.画像フィルタリング低-pass / high-pass / band-stop /band-pass
[youcansのOpenCVルーチン200]67.空間ドメイン画像強調の包括的なアプリケーション
[YoucansのOpenCVルーチン200の記事]68。空間ドメイン画像強調の包括的なアプリケーション
[youcansのOpenCVルーチン200記事]69。連続非周期信号のフーリエ係数
[youcansのOpenCVルーチン200記事]70。[youcansのOpenCVルーチン200]の1次元連続関数フーリエ変換
71.連続関数のサンプリング
[youcansのOpenCVルーチン200]72.One -次元離散フーリエ変換
[youcansのOpenCVルーチン200]73.二次元連続フーリエ変換
[youcansのOpenCVルーチン200]74.画像アンチエイリアシング
[youcansのOpenCVルーチン200]75.Numpyは画像フーリエ変換を実装します
[youcansのOpenCVルーチン200]76 .OpenCVは画像フーリエ変換を実装します
[youcansのOpenCVルーチン200]77.OpenCVは高速フーリエ変換を実装します
[YoucansのOpenCVルーチン200]78.周波数領域画像フィルタリングの基本
[youcansのOpenCVルーチン200]79.周波数領域画像フィルタリングの基本手順
[youcansのOpenCVルーチン200]80.周波数領域画像フィルタリングの詳細手順
[youcansのOpenCVルーチン200] 81.周波数領域ガウス低域フィルター
[youcansのOpenCVルーチン200]82.周波数領域バターワース低域フィルター
[youcansのOpenCVルーチン200]83.周波数領域低域フィルタリング:印刷されたテキスト文字の修復
[youcansのOpenCVルーチン200] 84 。ローパスフィルターからハイパスフィルターを取得する
[youcansのOpenCVルーチン200]85.周波数領域ハイパスフィルターの適用
[youcans200記事のOpenCVルーチン]86。周波数領域フィルターの適用:指紋画像処理
[200記事youcansのOpenCVルーチンの概要]87。周波数領域のパッシベーションマスキング[youcansのOpenCVルーチン200
件]88。周波数領域のラプラシアンハイパスフィルタリング
[youcansのOpenCVルーチン200]89.バンドストップフィルターの転送機能
[youcans OpenCVルーチン200]90.周波数領域ノッチフィルター
[youcansのOpenCVルーチン200]91.ガウスノイズ、レイリーノイズ、アイルランドノイズ
[youcansのOpenCVルーチン200] 92.指数ノイズ、均一ノイズ、ソルトアンドペッパーノイズ
[youcansのOpenCVルーチン200] 93.ノイズモデルのヒストグラム
[YoucansのOpenCVルーチン200]94.算術平均フィルター
[YoucansのOpenCVルーチン200]95.幾何平均フィルター
[YoucansのOpenCVルーチン200]96.調和平均フィルター
[YoucansのOpenCV200ルーチン]97。逆調和平均フィルター
[YoucansのOpenCVルーチン200 ]98.統計的ソートフィルター
[youcansのOpenCVルーチン200]99.修正されたアルファ平均フィルター
[youcansのOpenCVルーチン]200記事]100。適応ローカルノイズリダクションフィルター
[youcansのOpenCVルーチン200記事]101。適応メディアンフィルター
[youcansのOpenCVルーチン200記事]102。ノッチバンドストップフィルターの転送機能
[YoucansのOpenCVルーチン200]103.周期的なノイズ干渉を排除するノッチバンドストップフィルター
[youcansのOpenCVルーチン200]104.モーションブラー劣化モデル
[youcansのOpenCVルーチン200] 105.乱流ぼけ劣化モデル
[YoucansのOpenCVルーチン200]106.劣化した画像の逆フィルタリング
[youcansのOpenCVルーチン200]107.劣化した画像のWienerフィルタリング
[youcansのOpenCVルーチン200]108.制約付き最小二乗フィルタリング
[ 200YoucansのOpenCVルーチン]109.幾何平均フィルタリング
[YoucansのOpenCVルーチン200記事]110。投影と雷電変換
[youcansのOpenCVルーチン200記事]111。雷電変換逆投影再構成画像
[youcansのOpenCVルーチン200記事]112。フィルター処理された逆投影再構成画像
[youcansによる200OpenCVルーチン]113.形態学的操作の腐食
[youcansによる200のOpenCVルーチン]114
。形態学的操作の拡張[youcansによる200のOpenCVルーチン]115。形態学的操作のオープン操作
[YoucansのOpenCVルーチン200の記事]116。形態学的操作のクローズド操作
[ youcansのOpenCVルーチン200記事]117。形態学的操作のトップハット操作
[youcansのOpenCVルーチン200記事]118。形態学的操作の下部ハット操作
[youcansのOpenCVルーチン200記事]119。画像の形態学的勾配
[youcansのOpenCVルーチン200記事] ]120.ヒット-ヒット-ミス変換
[youcansのOpenCVルーチン200記事]121。hit-特徴認識に失敗
[youcansのOpenCVルーチン200]122.形態学的アルゴリズムの境界抽出
[youcansのOpenCVルーチン200]123.形態学的な穴埋めアルゴリズム
[youcansのOpenCVルーチン200]124.穴埋めのためのフラッディングアルゴリズム[youcansの200OpenCV
ルーチン]125。形態学的アルゴリズムによる接続されたコンポーネントの抽出
[YoucansのOpenCVルーチン200]126.形態学的アルゴリズム
の凸包[youcansのOpenCVルーチン200]127.形態学的アルゴリズムの改良
[youcansのOpenCVルーチン200]128.形態学的アルゴリズムのスケルトン(skimage)
[YoucansのOpenCVルーチン200]129。形態学的アルゴリズムのスケルトン(再構築操作)
[youcansのOpenCVルーチン200]130.水平線と垂直線の形態学的抽出
[youcansのOpenCVルーチン200]131.垂直線文字抽出の形態学的再構築
[youcansのOpenCVルーチン200]132.形態学的再構築穴埋めアルゴリズム
の概要[youcansのOpenCVルーチン200]133.境界クリアの形態学的再構成
[youcansのOpenCVルーチン200]記事]134。形態学的再構成のセルカウント[200YoucansのOpenCVルーチン
]135。形態学的再構成の粒度決定
[200ユーカンのOpenCVルーチン]136。グレイスケール侵食とグレイスケール
拡張[ユーカンのOpenCV例]プログラム200記事]137。グレイスケールオープン操作とグレイスケールクローズ操作の原理
[ユーカンのOpenCVルーチン200記事]138。グレイスケールオープン操作とグレイスケールクローズ操作
[ youcansのOpenCVルーチン200記事]139。影を修正するためのグレイスケールトップハット変換
[youcansのOpenCVルーチン200記事]140。照明を修正するためのグレイスケールボトムハット変換

おすすめ

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