今回はpythonによる効果的な適応的二値化処理(adaptiveThreshold)について記載する。
adaptiveThresholdの効果的な実装方法
適応的二値化処理で良い効果を得るために以下の順で処理を実施する。
なお、C++で「cv2.fastNlMeansDenoisingColored」に該当するノイズ除去を使えない場合についてはこちらの記事に記載する。
C++でNon-local Means Filterを自作して画像のノイズを除去する
VisualStudioCodeを起動して以下のPythonコードを実装する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#-*- coding:utf-8 -*- import cv2 import numpy as np from matplotlib import pyplot as plt def main(): # 入力画像を読み込み img = cv2.imread("src.jpg") # ノイズ除去 img2 = cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21) # 結果を出力 cv2.imwrite("dst1.jpg", img2) # グレースケール変換 gray = cv2.cvtColor(img2, cv2.COLOR_RGB2GRAY) # ヒストグラム平坦化 equ = cv2.equalizeHist(gray) # 適応的二値化処理 dst2 = cv2.adaptiveThreshold(equ,255,cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY,11,2) # 結果を出力 cv2.imwrite("dst2.jpg", dst2) if __name__ == "__main__": main() |
コメントを残す