-2

'binary3.tiff'という名前の画像があります。

これは私のイメージです

「次の関数(funcと呼ばれます)では、画像はdoubleの行列として与えられます。これらの画像では、1はオブジェクトを表し、0(黒)は背景を表します。」

入力はどうあるべきですか?私は試した:

img = imread('binary3.tiff');
img2 = double(img)/255;
newimg = func(img2);

しかし、それは機能しません。

私を助けてください。

4

2 に答える 2

2

何が行われ、発生するエラーの性質についての詳細がなければfunc、私はあなたを大いに助けることはできませんが、代わりにこれを行うことができます:

img2 = double(img > 0);

入力画像の値がバイナリであることを確認し、もう一度やり直してください。0もちろん、代わりに、「バックグラウンド」と見なされるしきい値を設定できることに注意してください。

于 2012-05-18T14:53:58.803 に答える
2

問題は、imreadがtiff画像がRGB色空間ではなくCMYK色空間を使用していると想定しているためimg=imread('image.tiff')、3次元が3ではなく4のサイズのマトリックスを作成しているため、一部の関数が機能しないことが原因である可能性があります。imgたとえば、適切にオンにimage(img)するとエラーがスローされます。これが、入力が正しくないと解釈する理由である可能性があります。

の形式img=imread('image.tiff')はuint8です。つまり、すべての値は0〜255の整数です。これらを、0〜1の倍精度に変換する場合img2=double(img)/255は、行列をスカラーで除算することは、各要素をで除算することと同じであるため、これを行うのが正しいです。そのスカラー。

最後に、画像がRGB色空間にあることが確実な場合は、マトリックスの4番目の色層を破棄するだけで済みます。これを行うimg=imread('image.tif')img=img(:,:,1:3)、画像が実際にRGBである場合、などのコマンドはimage(img)正常に機能します。

于 2012-05-18T14:59:06.313 に答える