2014-09-04 84 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