[youcansの200のOpenCVルーチン]162。グローバルしきい値処理の改善された方法

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


[youcansの200のOpenCVルーチン]162。グローバルしきい値処理の改善された方法


3.4グローバルしきい値処理の改善された方法

実際の画像処理では、ノイズはしきい値処理の結果に深刻な影響を及ぼし、深刻なノイズは単純なしきい値処理の問題を解決できない問題に変えます。

ルーチン11.19:グローバルしきい値処理によって画像の平滑化が改善されました

ノイズの影響を受ける画像の場合、一般的な改善方法は、しきい値処理の前に画像を滑らかにすることです。

    # 11.19 全局阈值处理改进之图像平滑
    img = cv2.imread("../images/Fig1039a.tif", flags=0)

    histCV = cv2.calcHist([img], [0], None, [256], [0, 256])  # 灰度直方图
    scale = range(256)  # 灰度级 [0,255]
    totalPixels = img.shape[0] * img.shape[1]  # 像素总数
    totalGray = np.dot(histCV[:,0], scale)  # 内积, 总和灰度值
    mG = totalGray / totalPixels  # 平均灰度

    icv = np.zeros(256)
    numFt, sumFt = 0, 0
    for t in range(256):  # 遍历灰度值
        numFt += histCV[t,0]   # F(t) 像素数量
        sumFt += histCV[t,0] * t  # F(t) 灰度值总和
        pF = numFt / totalPixels  # F(t) 像素数占比
        mF = (sumFt/numFt) if numFt>0 else 0  # F(t) 平均灰度
        numBt = totalPixels-numFt  # B(t) 像素数量
        sumBt = totalGray - sumFt  # B(t) 灰度值总和
        pB = numBt / totalPixels  # B(t) 像素数占比
        mB = (sumBt/numBt) if numBt>0 else 0  # B(t) 平均灰度
        icv[t] = pF * (mF-mG)**2 + pB * (mB-mG)**2  # 灰度 t 的类间方差
    maxIcv = max(icv)  # ICV 的最大值
    maxIndex = np.argmax(icv)  # 最大值的索引

    # 阈值处理
    ret, imgBin = cv2.threshold(img, maxIndex, 255, cv2.THRESH_BINARY)  # 以 maxIndex 作为最优阈值
    ret, imgOtsu = cv2.threshold(img, mG, 255, cv2.THRESH_OTSU)  # 阈值分割, OTSU
    print("t(maxICV)={}, retOtsu={}".format(maxIndex, round(ret)))

    plt.figure(figsize=(7,7))
    plt.subplot(221), plt.axis('off'), plt.title("Origin"), plt.imshow(img, 'gray')
    plt.subplot(222, yticks=[]), plt.title("Gray Hist")  # 直方图
    plt.plot(scale, histCV[:,0]/max(histCV))  # 灰度直方图
    plt.plot(scale, icv/maxIcv)  # 类间方差图
    plt.subplot(223), plt.title("global binary(T={})".format(maxIndex)), plt.axis('off')
    plt.imshow(imgBin, 'gray')
    plt.subplot(224), plt.title("OTSU binary(T={})".format(round(ret))), plt.axis('off')
    plt.imshow(imgOtsu, 'gray')
    plt.tight_layout()
    plt.show()

ここに画像の説明を挿入


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


著作権表示:

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

Copyright 2022 youcans、XUPT
Crated:2022-4-18


「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。周波数領域フィルタリングの適用:指紋画像処理
[youcansのOpenCVルーチン200件]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。照明を修正するためのグレイスケールボトムハット変換
[YoucansのOpenCVルーチン200]141.グレースケールボトムハット変換の3D地形図
[youcansのOpenCVルーチン200]142.グレースケール形態に基づく画像平滑化
[YoucansのOpenCVルーチン200]143.グレースケール形態に基づく粒子サイズの決定
[YoucansのOpenCVルーチン200 ]144.グレースケール形態に基づくテクスチャセグメンテーション
[youcansのOpenCVルーチン200]145.形態学的エッジおよびコーナー検出
[youcansのOpenCV200ルーチン]146。グレースケール形態に基づく複雑な背景画像再構成[Youcansの
200OpenCVルーチン]147。画像セグメンテーション
[youcansの200OpenCVルーチン]148。画像セグメンテーションのライン検出
[YoucansのOpenCVルーチン200]149.画像セグメンテーションエッジモデル
[youcansのOpenCVルーチン200]150.エッジ検出勾配演算子
[youcansのOpenCVルーチン200]151.スムージングエッジ検出
[YoucansのOpenCVルーチン200記事]152。エッジ検出のLoGオペレーター
[youcansのOpenCVルーチン200記事]153。エッジ検出DoGオペレーター
[youcansのOpenCVルーチン200記事]154。エッジ検出のCannyオペレーター[200OpenCV
ルーチンofyoucans]155.エッジ接続のローカル処理方法
[YoucansのOpenCVルーチン200]156.エッジ接続のローカル処理のための簡略化されたアルゴリズム
[youcansのOpenCVルーチン200]157.ハフ変換ライン検出
[youcansのOpenCVルーチン200]158.しきい値処理方法の固定しきい値
[youcansのOpenCVルーチン200記事]159 。画像処理の固定しきい値方式
[youcansのOpenCVルーチン200記事]160。OTSU画像処理方式
[youcansのOpenCVルーチン200記事]161。OTSUしきい値処理アルゴリズムの実装
[youcansの200OpenCVルーチン]162。グローバルしきい値処理の改善された方法

おすすめ

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