価値を維持した大津の二値化


8

大津二値化アルゴリズムの修正版を実装しようとしています。ドキュメントの画像を2値化しようとしています。しかし、2値化の手順では、オブジェクト(この場合はテキスト)が元のグレースケール値を保持し、背景が255の値をとるようにします。つまり、白です。論文で見つけたサンプル画像バージョンを投稿しています。

これは元の画像です: ここに画像の説明を入力してください

これは私が取得したい結果の画像です: ここに画像の説明を入力してください

誰かがMatlabでそれを行う方法を教えてもらえますか?


あなたは巨大な灰色のブロブを保持したいですか?
内部石

値がしきい値を超えるすべてのピクセルの元の値を保持したい。これには、この場合のブロブが含まれます。
マーク

値を保持する大津の2値化のMatlabソースコード..

回答:


8

便利なMatlabはありませんが、OpenCVでこれを行う方法を次に示します。以下の例では、Python(x、y)を介してpythonインターフェースを使用しています。

test = cv2.imread("test.jpg", 0)
(_, otsu) = cv2.threshold(test, 0.0, 255.0, cv2.THRESH_TOZERO_INV + cv2.THRESH_OTSU)
cv2.imshow('otsu', otsu)

これにより、必要な出力が得られます。 ここに画像の説明を入力してください

編集:私はMatlabのコピーを持っていませんが、これはあなたがそれを行う方法だと思います(画像処理ツールボックスがあると仮定します):

graythreshを使用してOtsuレベルを取得し、そのレベルを超えるものを白(または255)に設定します。

I = imread('doc.jpg');
I = rgb2gray(I);
otsuLevel = graythresh(I);
I(I > otsuLevel) = 255;

お役に立てば幸いです。


MATLABでコードが必要です。私はソフトウェアに少し慣れていないので、コーディングについて少し助けが必要です
マーク

@mark可能なMatlabソリューションについては、私の編集を参照してください。
mevatron

6

Mathematicaで簡単に行うことができます:

img = ColorNegate@ColorConvert[Import["../Desktop/sample.jpg"], "Grayscale"]
ColorNegate@ImageMultiply[Binarize[img], img]

否定と乗算のビジネスは、元のグレースケール値を確実に保持することです。これはどんな言語にも簡単に翻訳できると思います。

フィルタリングされた結果

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.