2012-04-23 10 views

答えて

2

あなたはデータの種類やタイプを言わなかったので、私は単純なケースで答えを出すつもりです。画像が整数の配列であるとします。これらの整数の範囲は、9ビットのグレースケール画像では0から512です。バイナリイメージで0と1の間のカットオフポイントを決める必要があります。その後

bin_image <- round(grey_image/max(grey_image),0)

それを行う必要があります。データの範囲が0から1の場合は、同様の操作を行いますが、丸めパラメータを調整します。 編集:ooops、私はカットオフレベルの選択を外しました。 max(grey_image)K*max(grey_image)と交換します。ここで、最大半分で切断する場合はK = 1、高くカットする場合はK>1、低くカットする場合はK<1となります。

+0

としてEBImageに実装されています。これはRGBファイルで、rgb2grey()を使ってグレーに変換しています。私は、このグレーのイメージを丸めずにバイナリに変換する関数があることを知りたいです。丸め自体は0.5でカットオフを設定していますか? – Joy

+0

@喜び、そうです、それは丸めがすることです。あなたの "バイナリ"の定義は何ですか?私はあなたが2つのレベルを望むことを意味していると思った:0と1、そして最終結果で他のレベル。 –

+0

私は0と1レベルだけを欲しいです。 – Joy

0

EBImage BioconductorパッケージはR. パッケージのビネットから取られた基本的な例では、画像解析を行うための便利なツールです:

lena = readImage(system.file("images", "lena.gif", package="EBImage")) 
display(lena>0.5) 
+0

お返事ありがとうございました。今私はさらに進んでいく考えがあります。 – Joy

2

これは、しきい値または二値化と呼ばれています。私の経験で最も頑強なのはadaptive thresholdingです。これは私が.jpgファイルを読むためにReadImagesパッケージを使用していますthresh方法

 
x = readImage(system.file('images', 'nuclei.tif', package='EBImage')) 
if (interactive()) display(x) 
y = thresh(x, 10, 10, 0.05) 
if (interactive()) display(y) 
関連する問題