我将一个.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实现插值,或者你会推荐另一种方法吗?
答案 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,:);