我需要採用使用函數imread()
生成的非常大的矩陣。這將一個圖像(我的是一個JPG文件; 691x763)轉換成矩陣。爲什麼我的矩陣不能輸出正確的精度?
我需要將矩陣中的每個元素除以255,並顯示每個元素至少有3位小數。
我已經試過什麼:
output_precision(4)
但它並沒有對矩陣內的元素使用。
format long e
但是矩陣內的值仍然不受影響。
我需要採用使用函數imread()
生成的非常大的矩陣。這將一個圖像(我的是一個JPG文件; 691x763)轉換成矩陣。爲什麼我的矩陣不能輸出正確的精度?
我需要將矩陣中的每個元素除以255,並顯示每個元素至少有3位小數。
我已經試過什麼:
output_precision(4)
但它並沒有對矩陣內的元素使用。
format long e
但是矩陣內的值仍然不受影響。
我猜imread()
給了你一個uint8
的矩陣。試試這個:
I = imread('image.jpg'); %// your image
A = double(I)/255; %//convert matrix to double before dividing it by 255
您應該使用im2double
http://octave.sourceforge.net/image/function/im2double.html其獨立是否縮放0..1你,這可能是UINT,UINT16,INT16等輸入格式。
使用'im2double'和其他答案中顯示的方法有什麼區別嗎? – whatwhatwhat
正如我在我的答案中所寫,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
@whatwhatwhat並且由於函數已被移至Octave核心,請參閱[source there](http://hg.savannah.gnu.org/hgweb/octave/file/9810e483b42f/scripts/image/im2double.m )代替。 – carandraug