重新采样uint8的matlab数组

时间:2014-09-04 22:04:49

标签: arrays matlab interpolation resampling

我将一个.JPG文件添加到Matlab工作空间,Matlab将其作为一个200x300无符号整数的2D数组加载,范围为0-255。 我有兴趣分析这个矩阵的一行。为此,我只是使用

提取行
row = ones(300);
row = myMatrix(150, :);

然后,我意识到为了将它与另一个长度为450个元素的数组进行比较,我需要将行向量扩展1.5倍,即将我的数组拉伸到450个样本。为此,我尝试使用resample函数,如下所示:

row2 = resample(row, 3, 2);

但我收到错误,说重采样功能不支持unit8类型的数据。

在我的情况下,有没有办法使用resample实现插值,或者你会推荐另一种方法吗?

1 个答案:

答案 0 :(得分: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,:);