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

Matlab内图片的拉伸

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
4 n& @. @' k  h) }; Q" a+ }  D
Matlab里面显示一张图片的话,长宽比取决于图片的横向纵向像素点数。* k7 y4 N0 y  ?6 O: X
如果一张图片是433×433的话,那么imshow之后,就会按1比1比例显示,即使你拉伸窗口。
% a! a1 t6 P3 J1 K, E1 @
. R& T; B6 G+ C* K& Q* K/ V8 u* [fname = 'frog.bmp';
& L- R2 ^( s8 e, p& O7 K( ?A=imread(fname);; Y& F  C" d* D& M. Y2 Z
imshow(A);' ~- W# a1 o! W# F. T+ t3 ?4 B
set(gcf,'position',[100 100 400 800]);3 ?9 I% {- Y6 T9 H" x$ C
效果如下:! Z3 @& h3 P% w" b# ]% w. V

) f5 b8 Z# `6 F. x8 Y0 P) ? 7 A' J, G! r& q0 w0 N7 G
9 E; g3 M9 n# ^3 D
怎么能让图片充满整个画框呢。可以用画图板打开,拉伸图片,然后重新保存。3 ?, l' o  y$ ?% {" k9 F
或者写个函数3 z( K& o- O+ a  o2 Y
* e1 p7 ^% b: O) P( j
B= figure_stretch(A,1,3);
+ U  q+ }' D5 [+ ~6 X: q  O. Q( x8 Afigure
2 N1 l" c4 P4 a8 wimshow(B);5 m/ W! G8 F2 p/ \5 @
set(gcf,'position',[100 100 400 800]);( a+ L! Y" J& z9 [
& Z. G+ I' l- Z0 |9 w. f
效果如下:
: \1 ~0 J; B) l- L4 G
- V/ ~6 u* x0 }( f/ h& c7 @ 4 D- w! Z1 a% Z4 c% ]0 B

8 B/ Q. _& c& wfigure_stretch函数如下:
0 N) q- H' [( nfunction C=figure_stretch(fname,w_scale,h_scale)& W/ {. N' e2 r0 y& ]4 l5 O
% Stretch the figure.
) A3 e5 |, K6 W0 G2 B& K% Usage:
: T0 ]' t  X. R. Y% C=figure_stretch(fname,w_scale,h_scale)- u& E; z8 E- x) t$ o
% fname        : name of the figure
4 G+ m# g4 C  p! b" S# t/ _% w_scale      : stretch scale in width
$ D1 h# w- {) @8 Z: f, g2 N% h_scale      : stretch scale in hight0 N5 i" L3 I, V# V# J. c
% Example:
/ ]# d6 V; C7 ~4 `% fname = 'frog.bmp';
, F+ R# C8 Y+ M6 M& I% B= B= figure_stretch(fname,1,3);2 f! m3 r" E; d# Z
% figure
' h1 m! F8 U# @4 l; {; p0 L  `% imshow(B);
8 r: G" ^" F7 [9 }1 O8 v% Author :  Haiyang Cui4 V+ t  T$ V3 F* E7 ?
% EMail  :  ***
4 m( G7 a1 b: n! ^( K: w8 b- @: J6 z- }( l$ M
A= imread(fname);, W$ }7 W5 i: U" k2 Q2 g# ~
[I,J,K]=size(A);1 n; I# `$ B  U
x0=1:J;
6 |' V# v9 g$ C6 Iy0=1:I;4 J* B3 ~3 H, y- y0 \! h
[X0,Y0] = meshgrid(x0,y0);  q; f4 m) g+ ?' i+ S2 e
I1 = floor(I*h_scale);
2 k) e& T3 B$ l( T9 ^) f3 CJ1 = floor(J*w_scale);
' T) s* f& d2 U; z' {3 Y* i# T
( X& N+ t2 ]" {8 bR = A(:,:,1);- Q" Y$ n: D5 t% H5 \9 z
G = A(:,:,2);. a! `6 i% {  r; ~; t/ v* g
B = A(:,:,3);" J+ ~% D$ C! n
! D' L, [" O6 \% c$ |$ C2 Q" R0 n
% - M& s% s1 h' c; W
x = 1:J1;
# K2 C6 R# _9 @2 X# U9 J+ Y6 [y = 1:I1;
( B6 ]! H' \, ~) j! I[X,Y] = meshgrid(x,y);
2 A$ \' e+ r" k. |
! W! l8 K$ g5 ~7 C# r) U7 uX = X*J/J1;
- R, K0 r2 p* x' _8 F+ k; mY = Y*I/I1;
& r$ F% n; C; o2 q" N+ ZX = double(X);6 h# b  p' ~# P: t
Y = double(Y);
9 x/ _, {, j; B( I! W6 HR = double(R);
1 f% M7 E2 x  X3 sG = double(G);
, V6 U: U9 i5 X  @. RB = double(B);6 i, f; d4 _, c) ~3 j! U! t
%5 |* U, \. O" F0 t: J* w  [" B. I
R1 = interp2(X0,Y0,R,X,Y);) A3 N- f" Y4 B9 g; ~+ M0 ]
G1 = interp2(X0,Y0,G,X,Y);
, Q5 |  h" X+ N1 |: B2 o( EB1 = interp2(X0,Y0,B,X,Y);
% f! I" O  Z1 d4 YC(:,:,1)=uint8(R1);
4 d" ?  D! h# D2 MC(:,:,2)=uint8(G1);
8 L) w5 s  H5 H* [2 p; c1 ]1 ]C(:,:,3)=uint8(B1);6 E4 S- ~, W# c' Q( ^
end. K6 @5 k3 U6 q% S3 T1 X7 C

9 m. ^) R0 ~% F4 ^" ?* `

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 00:18 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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