2016-04-24 9 views
0

私は関数imread()を使って生成された非常に大きな行列を取る必要があります。これは、画像(私はjpgファイル、691x763です)を行列に変換します。マトリックスが正確な精度を出力しないのはなぜですか?

マトリックスの各要素を255で除算し、各要素を少なくとも3桁の小数点以下の桁数で表示する必要があります。

私が試したもの:

output_precision(4)が、それは行列内の要素のために動作しませんでした。

format long eしかし、マトリックス内の値はまだ影響を受けませんでした。

答えて

1

私はimread()あなたにuint8の行列を与えたと推測しています。代わりにこれを試してみてください:

I = imread('image.jpg'); %// your image 
A = double(I)/255; %//convert matrix to double before dividing it by 255 
2

あなたは独立してその上のuint、uint16の、INT16となる可能性がある入力フォーマットのあなたのため0..1にスケーリングを行いim2doublehttp://octave.sourceforge.net/image/function/im2double.htmlを使用する必要があります。

+0

「im2double」と他の回答に示されている方法との間に違いはありますか? – whatwhatwhat

+2

私の答えですでに書いたように、im2doubleは入力形式を独立して処理します。たとえば、入力画像がuint16の場合、65535で分割されます。UTSL! https://sourceforge.net/p/octave/image/ci/default/tree/inst/imcast.m https://sourceforge.net/p/octave/image/ci/default/tree/src/im2double.m .in – Andy

+1

@whatwhatwhat関数がOctaveコアに移動したので、[source there](http://hg.savannah.gnu.org/hgweb/octave/file/9810e483b42f/scripts/image/im2double.m)を参照してください。 )代わりに。 – carandraug

関連する問題