'binary3.tiff'という名前の画像があります。
「次の関数(funcと呼ばれます)では、画像はdoubleの行列として与えられます。これらの画像では、1はオブジェクトを表し、0(黒)は背景を表します。」
入力はどうあるべきですか?私は試した:
img = imread('binary3.tiff');
img2 = double(img)/255;
newimg = func(img2);
しかし、それは機能しません。
私を助けてください。
何が行われ、発生するエラーの性質についての詳細がなければfunc
、私はあなたを大いに助けることはできませんが、代わりにこれを行うことができます:
img2 = double(img > 0);
入力画像の値がバイナリであることを確認し、もう一度やり直してください。0
もちろん、代わりに、「バックグラウンド」と見なされるしきい値を設定できることに注意してください。
問題は、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)
正常に機能します。