2016-03-24 6 views
1

暗い背景に明るい「ファイバー」を示すグレースケールイメージが多数あります。私は繊維の量を定量化しようとしています。それらがほとんどどこにでも重なっているので、繊維の数を数えることは不可能なので、代わりに、白い線維の面積率をフルイメージと比較して単純に計算することに頼ります(例えば、これは55%より少ない繊維を有するものは43%のみが白であるなど)。換言すれば、私は画像中の繊維の密度を定量化したいと思う。イメージ内の「明るいピクセルの部分」(閾値?)

例写真:

高密度:https://dl.dropboxusercontent.com/u/14309718/f1.jpg

低密度:

https://dl.dropboxusercontent.com/u/14309718/f2.jpgは、私はちょうど画像を変換することでうまく仕事をするだろう、単純な(適応)しきい値フィルタを考え出しに純粋黒/白を計算し、次に白のピクセルの割合を数えます。しかし、私の答えは、私が選んだしきい値にほぼ完全に依存しているようです。私はいくつかの異なる閾値を取ることによっていくつかの素早い実験を行い、すべての写真において白い画素の割合がほぼ正確に閾値の線形関数であることを見出した。言い換えれば、私が選択した閾値に応じて、約10%から90%の間で必要な答えを得ることができます。

私の結果は閾値を選択する方法に非常に偏りがあり、完全に役に立たないため、これは明らかに良いアプローチではありません。さらに、これらの画像が約100枚あり、手動で「正しい」しきい値を選択しようとは思っていません。

この方法を改善するにはどうすればよいですか?

答えて

2

イメージが複雑でファイバーの輪郭がぼやけているため、「正確な」測定が得られることはほとんどありません。できるだけ様々な照明条件であっても同じファイバ密度が常に同じ測定値に割り当てられ、異なる密度が異なる測定値が割り当てられることを保証することが重要である。

これは、しきい値を調整する際の人間の介入を排除します。

私の最善のアドバイスは、意味のある背景や前景の強度を見つけるのに非常によく、かなり照明に依存しない大津の閾値処理に頼ることです。

2値化はコントラスト強調と通勤するため(実際のメリットはないため)、コントラストを強調することは避けるべきですが、コントラスト強調は場所を飽和させることによって画像を劣化させる可能性があります。あなたは、ほとんどのLinuxディストリビューションにインストールされ、OSXとWindowsで利用可能ですさのImageMagickを使って、画像のヒストグラムを生成することができます...

をし、いくつかの具体的な例を提供する -

+0

ありがとうございました。私は、輪郭のぼやけは正確には私が持っている問題だと思っています。閾値を上げることは、単に繊維の多くを考慮に入れているように思えます(例えば、ぼやけたエッジのほうが多くカウントされます)。閾値に依存する。この問題に具体的に取り組むものは何もありませんか?ぼやけは、すべての画像で非常に似ているはずです。そのため、おそらく黒から白へのグラデーションを見て、中間の値を「エッジ」として選ぶアルゴリズムでしょうか?私はこれがブレーンストーミングだけでどのように達成できるのか分かりません。私は大津の閾値を調べます。 –

+0

@NickThissen:あいまいなエッジについて心配する必要はありません。経験的な測定を使用してください。どのような種類の「正確さ」よりも、再現性が重要です。 –

0

は本当に@YvesDaoustの考えをエコー。私はコマンドラインでこれをやっているだけですが、いくつかのテストを実行し、Yvesの提案がどのように機能するかを確認するのは強力で簡単です。

# Make histograms for both images 
convert 1.jpg histogram:h1.png 
convert 2.jpg histogram:h2.png 

enter image description here

enter image description here

はい、彼らはかなり二峰性のある - ので、大津のしきい値は、クラス間分散を最大化するしきい値を見つける必要があります。 here

./otsuthresh 1.jpg 1.gif 
Thresholding Image At 44.7059% 

./otsuthresh 2.jpg 2.gif 
Thresholding Image At 42.7451% 

enter image description here

enter image description here

フレッドWeinhausのウェブサイトからスクリプトotsuthreshを使用して、各画像における白画素のカウント率:

convert 1.gif -format "%[fx:int(mean*100)]" info: 
50 

convert 2.gif -format "%[fx:int(mean*100)]" info: 
48 

その輝かしいない区別! Mmmm ...ノイズを減らすためにメジアンフィルタを追加しようとしましたが、それは助けになりませんでした。厄介なアーティファクトを避けるためにPNG形式で画像を入手できますか?

関連する問題