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

Matlab内图片的拉伸

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
2 O6 ]5 |. P* o/ O% D& T0 k8 p
Matlab里面显示一张图片的话,长宽比取决于图片的横向纵向像素点数。3 u  R# b8 ~- H. ^6 ~- q
如果一张图片是433×433的话,那么imshow之后,就会按1比1比例显示,即使你拉伸窗口。
# d! m" Q8 {5 V
, k6 u" k% K/ j1 k$ v+ i5 d6 rfname = 'frog.bmp';
! y# C$ M2 ?' t! D1 lA=imread(fname);
; V6 M; e' [, aimshow(A);
0 f) D& ^, G, e4 p5 T- Aset(gcf,'position',[100 100 400 800]);
  O% W5 }6 E  z+ Q效果如下:  e0 K) }/ H% R* Q; b+ [$ k

' T: E. O+ r1 f
; D; w& Z) F& X7 b
1 m' v# G1 D. v怎么能让图片充满整个画框呢。可以用画图板打开,拉伸图片,然后重新保存。
: \, }* {9 d0 F5 Q4 Z( D8 }或者写个函数
& C* |* \& I$ [7 ~4 Q- x; J# W* m" h
B= figure_stretch(A,1,3);
4 n- X, B, C: ~' M1 y5 F' Gfigure9 [9 U4 L, F# }7 L6 e, U8 m- P: s8 \/ h
imshow(B);0 I% }9 {4 M1 f# Z4 ]4 r
set(gcf,'position',[100 100 400 800]);
* S: V+ _- B* c6 ]! `. U
+ f% B" N/ ?/ [8 a效果如下:  k0 z" q1 ]4 F0 M  Q4 L

" g0 F8 E- W  ` 9 a3 m. O1 [; y1 \* k7 O9 J
  h6 ]6 }* R) G( b6 x
figure_stretch函数如下:
+ P( x3 Z( n2 jfunction C=figure_stretch(fname,w_scale,h_scale)6 ~* T: K, {) A7 y0 O1 t! _4 j
% Stretch the figure.2 ?1 v* z9 Y- ~& W0 ?. \
% Usage:
# J7 x( }, L9 a) H% C=figure_stretch(fname,w_scale,h_scale)
+ B0 q  F/ t) Z+ i- {% fname        : name of the figure
3 {6 \" b" n; E" S& g6 J% w_scale      : stretch scale in width
/ L, e9 O* `, Q: H% h_scale      : stretch scale in hight! i) f! Y8 Z; Z4 Y9 N. }# Q
% Example:* G1 R8 |. F% K& g  \
% fname = 'frog.bmp';
- R( ?" k8 C  p8 d) H9 R% L% B= B= figure_stretch(fname,1,3);4 Q- c3 F9 ?( ?: a$ G$ O
% figure
8 B/ |8 E6 g9 H0 P$ x# d. K% {% ]% imshow(B);8 H* n( p, X7 |: l
% Author :  Haiyang Cui1 t0 I/ I- d- S* l
% EMail  :  ***; b$ u( u7 M( g9 X, X" r

) {# `# k' w; D$ s/ bA= imread(fname);0 f/ X* }1 V! c) \
[I,J,K]=size(A);' D; D! G  w  }) p
x0=1:J;& d( b9 `* r1 G. S+ v! ], ?
y0=1:I;
3 W7 c. E- W/ z4 b[X0,Y0] = meshgrid(x0,y0);
4 }  x; o, E4 ?. R, l7 z" RI1 = floor(I*h_scale);( ]2 e: Z/ [5 B9 x
J1 = floor(J*w_scale);* M% `5 V( I, V9 S$ x' R
) g1 k! ]6 ]1 I- V  ^+ F+ N) B
R = A(:,:,1);  W/ a. i( S5 P" z. D$ V9 R
G = A(:,:,2);- |" N8 h3 l) l! E) ^
B = A(:,:,3);4 U( E6 z  l+ l* h
9 }' b' _+ B9 k/ v6 \$ x
% * k: L" r3 [" S$ ]! j1 k
x = 1:J1;$ ?2 i# f' R6 m/ G7 N, B9 v
y = 1:I1;+ o4 I1 F8 p/ w: A) |# G
[X,Y] = meshgrid(x,y);
3 [, Q' q5 L' J) z( G( T+ ?7 O+ K" M3 x: A/ s: I; G3 ^2 x
X = X*J/J1;& }. A4 F( Z( B: e; v. ]
Y = Y*I/I1;
- ], W0 R( l8 a8 s3 pX = double(X);
5 ]& r! \, P3 t4 \1 hY = double(Y);' P! y: _1 q/ x+ Y& L; b* `
R = double(R);% S9 E' P- ~0 |! M' x0 t
G = double(G);! C% B8 y. I5 X) N& h
B = double(B);
6 |( V+ ]5 l+ v0 V/ r%2 f5 v3 B! |2 l+ [6 B8 P2 g
R1 = interp2(X0,Y0,R,X,Y);
3 _! U$ Z) k4 w; TG1 = interp2(X0,Y0,G,X,Y);
6 u: {" @: S! `" b# ]) ~B1 = interp2(X0,Y0,B,X,Y);2 [5 L& x  u3 T: V
C(:,:,1)=uint8(R1);- |- y6 k0 Q, {: }' M; P2 M
C(:,:,2)=uint8(G1);( `+ l" O) N$ _
C(:,:,3)=uint8(B1);
* l3 P# p' N& [( |; Y' nend: S) q  s4 b: U, W- j" j+ ^
" J( y3 G3 }% r# q

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 19:53 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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