加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab内图片的拉伸

(2011-07-18 20:17:31)
标签:

matlab

figure

stetch

杂谈

分类: matlab
Matlab里面显示一张图片的话,长宽比取决于图片的横向纵向像素点数。
如果一张图片是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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有