matlab矩阵缩小和放大

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab矩阵缩小和放大相关的知识,希望对你有一定的参考价值。

Matlab里的imresize函数可以对图像放大和缩小,但这同时也会改变图像矩阵的大小,如果想要上图所示的结果,需要再进行一些处理,处理代码如下所示。

clc
close all;

% 从当前目录下打开一张图片
[filename, filepath] = uigetfile('*.jpg;*.ppm; jpeg *.;*.bmp;*.png','Choose Input Image');
if isequal(filename,0) || isequal(filepath,0)
disp('User pressed cancel')
return
else
fullfp = fullfile(filepath, filename);
end
image = imread(fullfp); %代表要处理的图像
mysize = size(image);
%把图像转换成灰度图
if numel(mysize) > 2
image = rgb2gray(image);
end
r_e = mysize(1);
c_e = mysize(2);
subplot(2,3,1); imshow(image,[]); title('Input Image');

temp1 = imresize(image,2); %表示把图像放大到原来的两倍,但同时图像矩阵也是变成了原来的两倍
[r_t1,c_t1] = size(temp1);
s = temp1(round(r_t1/2)-floor(r_e/2) : round(r_t1/2)+ceil(r_e/2)-1, round(c_t1/2)-floor(c_e/2) : round(c_t1/2)+ceil(c_e/2)-1);
subplot(2,3,2); imshow(s,[]); title('Magnification');

temp2 = imresize(image,0.5); %表示把图像缩小到原来的一半,但同时图像矩阵也变成了原来的一半
[r_t2,c_t2] = size(temp2);
temp3 = zeros(r_e,c_e);
temp3(round(r_e/2)-floor(r_t2/2) : round(r_e/2)+ceil(r_t2/2)-1, round(c_e/2)-floor(c_t2/2) : round(c_e/2)+ceil(c_t2/2)-1) = temp2;
ss = temp3;
subplot(2,3,3); imshow(ss,[]); title('Minification');
登录后复制

ps:直接调用imresize函数而不进行处理的效果如下图所示:

看起来图像没怎么变化,但存储图像的矩阵已经变大或变小了,如下图所示:

image为原始图像矩阵,temp1为放大后的图像矩阵,temp2为缩小后的图像矩阵
参考技术A 在MATLAB中,可以使用imresize();函数来实现矩阵缩小和放大。该函数可以实现改变图像大小、比例和像素数量的功能。

通过Java代码实现图片的放大和缩小

本文介绍的例子在Android安卓手机上测试通过。

先看看效果吧。可以看到这个开发好的安卓应用有三个按钮:Zoom In缩小图片,Zoom Out放大图片和Save保存。

初始页面:

技术分享图片

可以在左边边框自由移动图片,图片下面的调试界面debug screen会显示详细的图片矩阵matrix信息:

技术分享图片

点击Save button后,根据左边图片的最新状态,会创建一个镜像文件Snapshot并显示在右边的ImageView控件里:

技术分享图片

技术分享图片

点击Zoom in按钮可以使图片缩小:

技术分享图片

点击Zoom out使图片放大:

技术分享图片

这个用Java开发的安卓应用完整代码: https://github.com/i042416/image_zoom.git

技术分享图片

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
技术分享图片

技术分享图片


以上是关于matlab矩阵缩小和放大的主要内容,如果未能解决你的问题,请参考以下文章

Matlab中怎样将一幅图像放大或缩小至固定的大小

通过Java代码实现图片的放大和缩小

h5 网页放大缩小会调用啥函数

android想要利用多点触控放大或者缩小一个view该怎么实现

python图像插值

画图放大镜怎么缩小