2016-04-24 83 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

您應該使用im2doublehttp://octave.sourceforge.net/image/function/im2double.html其獨立是否縮放0..1你,這可能是UINT,UINT16,INT16等輸入格式。

+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

相關問題