2015-05-12 57 views
0

我使用imread功能在八度到加載圖像:八度:如何加載雙重格式的灰度圖像?

image = imread ("data/images/image1.jpg")(:); 

這顯然是加載圖像與值0-255的整數的矩陣。

我想加載它作爲值爲0.0-1.0的雙打的矩陣。我可以像這樣轉換它。

doubleImage = double(image)/255.0; 

但是,轉換它是非常緩慢的,特別是對於很多圖像。有沒有什麼辦法直接加載圖像作爲雙打矩陣?

回答

1

不,沒有辦法直接讀取它作爲雙打。無論如何,它是沒有意義的,因爲圖像是文件中的一個整數,所以總是必須先讀取整數。如果要完成另一種類型的轉換,則將它分開是有道理的。或者,也許使用以雙浮點精度存儲圖像的文件格式。

但是,有一個更好的方法來做你正在做的事情,以轉換成雙。

pkg load image; 
img = imread ("image1.jpg"); 
img = im2double (img); 

使用im2double不會讓它更快一點(它執行的操作是一樣的你),但它會爲你節省如果將來所讀取的圖像是uint16,即使圖像已經是雙等級的。

此外,我不知道如何轉換爲雙倍緩慢。這是一個非常快速的操作。

+0

通過慢我的意思是它需要更長的時間將圖像轉換爲加載比加載圖像。更慢,因爲我仍然必須這樣做。以double形式加載圖像會更有效率。 – Mouscellaneous

+1

@即使'imread'有一個選項來執行它,它不會更快。它仍然需要讀取一個整數,然後將它加倍,然後除以255.關於你正在經歷的緩慢,你應該檢查什麼是慢速部分:加倍,或除255。 – carandraug