2014-09-04 72 views
0

我在Matlab工作區中添加了一個.JPG文件,Matlab將它加載爲範圍爲0-255的300x300無符號整數的二維數組。 我有興趣分析這個矩陣的其中一行。爲了這個目的我簡單地提取使用對uint8的matlab數組重新取樣

row = ones(300); 
row = myMatrix(150, :); 

行然後,我意識到,爲了將其與另一個數組,這是長度450組的元素的比較,我需要的1.5倍擴大我行向量,即將我的陣列拉伸到450個樣本。爲此,我嘗試使用二次採樣函數如下:

row2 = resample(row, 3, 2); 

但我收到的錯誤,指出二次採樣函數不支持unit8類型的數據。

有沒有一種方法來實現插值使用resample在我的情況下,或者你會推薦另一種方法?

回答

1

我認爲你必須轉換圖像時,你讀它的兩倍:

imgOriginal = imread('FileName.jpg'); 
imgDbl = double(imgOriginal); 
% if you need you may also convert the image to [0..1] range 
% imgDbl = double(imgOriginal)/double(intmax(class(imgOriginal))); 

調整大小,最好是使用imresize

imgResized = imresize(imgDbl , 1.5, 'bilinear'); % use the method you need 

因爲插值方法,它會考慮到高於/低於你需要的行數。然後,你可以選擇合適的行

row = imgResized(150,:); 
+0

重新取樣誤差提供了雙也表示,雙不支持的類型 – 2014-09-04 22:31:22

+0

您可以複製錯誤訊息? – anandr 2014-09-04 23:38:14

+0

@ user3670482你的工作空間中是否有一個名爲'resample'的變量?這聽起來像一個潛在的可變陰影。嘗試做'清除resample',然後再次嘗試您的代碼與圖像被鑄造爲'雙'。順便說一句,我也建議你使用'imresize'。該功能專門用於調整圖像大小。 – rayryeng 2014-09-05 00:54:16