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矩阵缩小和放大的主要内容,如果未能解决你的问题,请参考以下文章