Matlab内图片的拉伸
标签:
matlabfigurestetch杂谈 |
分类: matlab |
Matlab里面显示一张图片的话,长宽比取决于图片的横向纵向像素点数。
figure_stretch函数如下:
如果一张图片是433×433的话,那么imshow之后,就会按1比1比例显示,即使你拉伸窗口。
fname = 'frog.bmp';
A=imread(fname);
imshow(A);
set(gcf,'position',[100 100 400 800]);
效果如下:
怎么能让图片充满整个画框呢。可以用画图板打开,拉伸图片,然后重新保存。
或者写个函数
B= figure_stretch(A,1,3);
figure
imshow(B);
set(gcf,'position',[100 100 400 800]);效果如下:
figure_stretch函数如下:
function C=figure_stretch(fname,w_scale,h_scale)
% Stretch the figure.
% Usage:
% C=figure_stretch(fname,w_scale,h_scale)
% fname
: name of the figure
% w_scale
: stretch scale in width
% h_scale
: stretch scale in hight
% Example:
% fname = 'frog.bmp';
% B= B= figure_stretch(fname,1,3);
% figure
% imshow(B);
% Author : Haiyang Cui
% EMail :
cuiocean@gmail.com
A= imread(fname);
[I,J,K]=size(A);
x0=1:J;
y0=1:I;
[X0,Y0] = meshgrid(x0,y0);
I1 = floor(I*h_scale);
J1 = floor(J*w_scale);
R = A(:,:,1);
G = A(:,:,2);
B = A(:,:,3);
%
x = 1:J1;
y = 1:I1;
[X,Y] = meshgrid(x,y);
X = X*J/J1;
Y = Y*I/I1;
X = double(X);
Y = double(Y);
R = double(R);
G = double(G);
B = double(B);
%
R1 = interp2(X0,Y0,R,X,Y);
G1 = interp2(X0,Y0,G,X,Y);
B1 = interp2(X0,Y0,B,X,Y);
C(:,:,1)=uint8(R1);
C(:,:,2)=uint8(G1);
C(:,:,3)=uint8(B1);
end
文件下载:
http://www.4shared.com/file/oG3q1zgt/figure_stretch.html
密码 ronei

加载中…