EDA365电子论坛网

标题: Matlab内图片的拉伸 [打印本页]

作者: piday123    时间: 2020-7-29 13:58
标题: Matlab内图片的拉伸

+ j9 V: ?- X' H3 CMatlab里面显示一张图片的话,长宽比取决于图片的横向纵向像素点数。/ ^" J2 d7 `+ U! {' `
如果一张图片是433×433的话,那么imshow之后,就会按1比1比例显示,即使你拉伸窗口。
6 k$ r5 @7 d+ X5 i2 R" M, F9 S( K  K, K9 `6 V" C6 h1 n
fname = 'frog.bmp';
& S' S) ^& L; u( u7 C* F! @A=imread(fname);
5 F$ X8 Y2 w! n# zimshow(A);
# I3 w3 E1 q5 Z3 @$ i9 i/ e4 H8 k. ?" jset(gcf,'position',[100 100 400 800]);
3 R/ X3 U+ W4 Q  }; c- {效果如下:# X$ f' ^9 x9 y( f6 c/ S  _( w* l
* r3 e0 i3 n6 g7 z  R7 g

8 W3 h' a- ~( ]0 ?5 F6 P9 K8 L2 A) T6 ^% P
怎么能让图片充满整个画框呢。可以用画图板打开,拉伸图片,然后重新保存。
  V& L! C  {4 T% Q" |4 |或者写个函数9 b/ w4 Q/ Y# I7 y* I7 D

8 {' h: H# f5 F& v) k. ?B= figure_stretch(A,1,3);
4 k3 Y9 U8 ^6 n1 }5 W3 ]  l: qfigure1 v( S; L( ~- W: Z$ O
imshow(B);
8 M5 ?& T2 @2 @set(gcf,'position',[100 100 400 800]);* F0 H4 G* ^8 `  [  o

; M4 F5 w# I% v$ W效果如下:' m- g  \- M! X1 p* ?4 d

0 X0 \. ?" W* J2 S
' k# I% f* v2 S/ V, P4 ~2 Y) O" @2 }8 ~6 Q5 ?/ E1 }2 S3 X
figure_stretch函数如下:
" p( R0 Z* Q  B9 I% f! Cfunction C=figure_stretch(fname,w_scale,h_scale)  C% |7 H; d# ^
% Stretch the figure.
6 b# X  I) a7 D$ G! p2 F! G% Usage:& N' h4 X8 _  @) t
% C=figure_stretch(fname,w_scale,h_scale)
, F' r, j* Z3 P) d+ n7 U' y5 j$ a' |0 Q/ h% fname        : name of the figure- c9 T0 c2 N/ Y  k! R
% w_scale      : stretch scale in width
0 B  C, Y5 n+ T% u' z. Y% h_scale      : stretch scale in hight) p) Q- `- v" D
% Example:, |0 {5 q4 v( ^/ O
% fname = 'frog.bmp';
3 @9 w$ r' R. g6 c% B= B= figure_stretch(fname,1,3);
; j/ t6 q, M; t+ S9 V% figure
0 P2 F9 _% }8 a! R, O% imshow(B);5 A- e  Z2 @" B! M1 s
% Author :  Haiyang Cui& u; Q( s" ?3 T- V1 y* w
% EMail  :  ***
3 Q7 L2 ^8 q! g% Z; o1 a$ Y" v
4 Y1 f0 T- u' Q8 r, x# W1 U0 yA= imread(fname);# F. @4 m% c2 H9 ~; Y3 |
[I,J,K]=size(A);
# i. B2 t: O& x2 I3 x2 X0 n& [x0=1:J;
- O7 S& R  Z1 B5 ny0=1:I;' w1 n/ @3 n! \: P1 A
[X0,Y0] = meshgrid(x0,y0);' M! x% ^3 S! O; F* u" X/ r
I1 = floor(I*h_scale);5 E* [& B1 z5 q- I( m
J1 = floor(J*w_scale);) u8 ]5 \3 x1 y

0 s/ X- _# O2 z' R( U" S. R3 j/ PR = A(:,:,1);
- A  m% ^/ M% F# VG = A(:,:,2);$ `+ p- Q2 r. g
B = A(:,:,3);
- F$ @7 U, _% I. @2 Z; k
( Z* t5 }9 f4 N1 \% 8 h+ F* W5 [6 B3 N
x = 1:J1;
% i9 D2 D! I3 H: S+ ], T, Ey = 1:I1;& w( l6 Q5 e1 W
[X,Y] = meshgrid(x,y);& B1 J0 M) h& E# x+ L4 D

0 Y0 ]( |2 E, a/ E; _+ mX = X*J/J1;
: c& D; h& I% l/ ?9 s+ f! VY = Y*I/I1;
, `4 N: F1 j' W# A+ \X = double(X);7 z' }/ ^5 ^6 ?
Y = double(Y);
. j' n" \. t( ~R = double(R);9 A, s5 D: {* Y- ^: E- i0 F' X6 G, s' [
G = double(G);& z: W5 `* B& @! N# u, g
B = double(B);6 n1 b6 s2 ]) o7 k# b
%
% p$ _# Q- f( P) C, pR1 = interp2(X0,Y0,R,X,Y);& m( l5 U  H1 n, ]% Y. a* N+ L' x% Z$ f
G1 = interp2(X0,Y0,G,X,Y);
: \! S; _% d2 ]/ _1 ?6 G1 u) PB1 = interp2(X0,Y0,B,X,Y);
: M& P* h2 X" f: c1 b0 @C(:,:,1)=uint8(R1);8 M- R" h4 x8 q9 X
C(:,:,2)=uint8(G1);
* ]) i( c) m5 `9 ]1 l. U1 UC(:,:,3)=uint8(B1);& M( e  _; p7 ^3 D: ]1 R* c, k
end
7 |/ U6 o# Y' R2 I$ w& u& t& k( l9 T! y  l, v

作者: CCxiaom    时间: 2020-7-29 14:38
Matlab内图片的拉伸




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2