找回密码
 注册
关于网站域名变更的通知
查看: 647|回复: 1
打印 上一主题 下一主题

Matlab内图片的拉伸

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-29 13:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

; j: |6 v& H( uMatlab里面显示一张图片的话,长宽比取决于图片的横向纵向像素点数。
' `6 t) W. W# w+ P1 F* H; p2 d如果一张图片是433×433的话,那么imshow之后,就会按1比1比例显示,即使你拉伸窗口。+ Q/ b. Q1 B9 j8 V! i
& e8 F" o2 \6 s: q
fname = 'frog.bmp';
" |( y# k# e3 q0 v9 FA=imread(fname);3 M4 n8 l! h" l/ ?
imshow(A);% X2 w! t6 u8 D: d
set(gcf,'position',[100 100 400 800]);7 T' l- A4 o( I3 l( D: g* ^
效果如下:  u( \1 |0 t1 O# o2 [+ H* [( }
1 S6 v1 [& _* |
/ H+ B+ g. Q  K$ s' v$ r$ R
( W- H( b4 ^+ U1 }- l
怎么能让图片充满整个画框呢。可以用画图板打开,拉伸图片,然后重新保存。
* o0 D) }# }0 F8 V8 P; d, W$ N8 K或者写个函数
, \: m8 z2 r9 u8 |- _
5 I: W& t/ B2 W8 j4 M- c5 c+ @B= figure_stretch(A,1,3);5 [- b# {% v. U! x
figure
$ W( a, B! {9 J( Uimshow(B);
4 q# m# ~, U* Q2 D$ _1 I9 vset(gcf,'position',[100 100 400 800]);
' h: B- T: b/ Q4 @/ u4 v  j6 |+ R' k
+ j# L! q8 ^! R7 d7 C1 t0 @效果如下:
: U" ]/ z' N1 U; s; D7 z2 I
2 e( l) ~" q4 }* i/ |! v: `7 u, A
2 l# h, H4 a  U/ M  q9 l3 w4 |( k& S; X( L1 x
figure_stretch函数如下:2 M8 I: c6 M* p
function C=figure_stretch(fname,w_scale,h_scale)6 h9 {+ L* l; G6 x$ F2 A
% Stretch the figure.1 T* F1 b5 m4 x/ u- D6 {) A
% Usage:" K% r- z# ~3 F) e+ E
% C=figure_stretch(fname,w_scale,h_scale)5 n2 Y' n7 h3 {( T4 y, J
% fname        : name of the figure: ]5 ]( Z' r! ^
% w_scale      : stretch scale in width0 W  Y  s  w% _1 s& V: f& m' D
% h_scale      : stretch scale in hight* k0 a0 X3 p  W, |2 u6 N# @* B
% Example:; A& \, ^3 X. |0 e4 x
% fname = 'frog.bmp';
0 ~# i0 X* @: D' _* J% B= B= figure_stretch(fname,1,3);6 j& Y' v2 q$ U( n3 F8 u% D
% figure
3 u3 E, b7 o' ]& X3 C2 z% imshow(B);
& f  w6 a& n# u- }3 J6 ]% Author :  Haiyang Cui5 h* ^8 Q- q% g& R- {! v
% EMail  :  ***! q9 b7 S- m6 P
1 R+ s  x$ V' r. ~9 n% W; D- i* I
A= imread(fname);
2 o8 P; `( Y: E' F3 f3 t; i: m* c[I,J,K]=size(A);0 n% `% [; B5 q- S" c& f( N
x0=1:J;- k, w9 x6 [9 f4 B6 e  b9 z$ ?
y0=1:I;
% |# H4 g, k3 [; ^9 x- I! P[X0,Y0] = meshgrid(x0,y0);' B; u! n6 D; D
I1 = floor(I*h_scale);* b0 ]/ Q- N; w$ T+ a
J1 = floor(J*w_scale);3 E- w( M# P/ \# Q) i: u3 B7 j

' n7 M! P; g2 F" uR = A(:,:,1);. o$ h6 L' m) i8 U
G = A(:,:,2);6 s3 r* O& @4 d
B = A(:,:,3);/ ^# T) k+ s! R& }, L! q8 }! g
( C# l8 s1 l' O0 e
%
9 X1 m( h$ f7 Q6 ~x = 1:J1;7 [, v7 O7 A, h& o
y = 1:I1;
1 Z, m6 a0 d) A  q, S[X,Y] = meshgrid(x,y);$ S1 {* d4 E3 Z5 o5 ~% y' u

5 }( f7 e" N; P  _( [X = X*J/J1;* e# u; {# y& g/ ~
Y = Y*I/I1;: Y- I3 {& c! R+ ]6 y# c6 |8 C- ~0 f
X = double(X);( t! w7 {  g, z/ i; @5 p- K
Y = double(Y);
& y1 f# }5 x0 x& s" iR = double(R);, u, F4 I: D* W2 }
G = double(G);" m  D4 ^) e+ {
B = double(B);
% @: w5 j8 t+ \! A4 i%
0 w5 f. y9 @# V% T+ Q5 X: m! H: OR1 = interp2(X0,Y0,R,X,Y);7 V+ h( d4 _$ c1 p
G1 = interp2(X0,Y0,G,X,Y);! r2 o4 U* [* |
B1 = interp2(X0,Y0,B,X,Y);
% @' p' R0 e7 Z8 Y- q( N+ jC(:,:,1)=uint8(R1);
1 `# r, N9 p+ [2 M/ MC(:,:,2)=uint8(G1);
, E- V( m7 l4 `( PC(:,:,3)=uint8(B1);
( x/ n4 j) S6 b7 s/ q  G. [. bend
3 l+ N* Y& C( J4 S
6 F) w4 E( M/ b3 I( Z/ v. \

该用户从未签到

2#
发表于 2020-7-29 14:38 | 只看该作者
Matlab内图片的拉伸
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 18:22 , Processed in 0.203125 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表