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

Matlab内图片的拉伸

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
0 S$ z8 r* d% G- p; P( F
Matlab里面显示一张图片的话,长宽比取决于图片的横向纵向像素点数。- l  @/ }- `' Z0 y: A
如果一张图片是433×433的话,那么imshow之后,就会按1比1比例显示,即使你拉伸窗口。
' {; j! h$ Y9 B- z& B" W$ q5 i' y- Y# v% c) ?
fname = 'frog.bmp';
5 C6 B; Q. F4 ^A=imread(fname);2 {: }( I4 V0 W8 ~4 d( m6 Q2 n
imshow(A);* w) u! b. \1 F/ m9 x, P4 c- e
set(gcf,'position',[100 100 400 800]);
0 J+ `+ h! @% e" ?+ H- F效果如下:
8 ^  g: S9 q, B
2 S8 @$ ^: d% V  o& |- f : G9 g, w' r# \4 o+ Z' P

+ F% n+ H* T& M  M% M" L怎么能让图片充满整个画框呢。可以用画图板打开,拉伸图片,然后重新保存。
# N; e7 ^' j$ d! N或者写个函数
" I- J* a( S1 @+ p1 v5 T9 ]0 l. ^0 Q) V( O# {% h9 ~
B= figure_stretch(A,1,3);2 _. [2 _8 W! c9 T. b
figure( }* B- G! [! ]" p; V' X
imshow(B);5 R4 P: S, F. q9 ~  X% p
set(gcf,'position',[100 100 400 800]);# n# p! Q6 q& p$ M2 ?

, ?* t% R* G1 x1 k效果如下:- ^! D' h. m- d! ]; {3 G  }

' @/ e! C8 @% s. [, @: o) f 8 B. q8 w1 [0 I& |1 P9 K' J
# ?; M; d& h" K. a1 Q# N) t
figure_stretch函数如下:" @6 K7 b0 w/ o- o9 O8 q
function C=figure_stretch(fname,w_scale,h_scale)
, D" a9 p+ z1 N7 Y% Stretch the figure., T; t2 `% g/ v) f- M% O# w
% Usage:
, g3 [, m7 ?+ ?3 H% C=figure_stretch(fname,w_scale,h_scale)
+ |5 ?: A7 Z: N8 J. \2 l6 a; m% fname        : name of the figure  X* Y- H/ s5 Y: _
% w_scale      : stretch scale in width; R  p/ ~6 f6 `8 a6 k
% h_scale      : stretch scale in hight/ V# I/ O' K& o$ r& t0 E0 o
% Example:  c) n  V  ]$ O6 S* S: _
% fname = 'frog.bmp';
( D0 D* D$ k# h* B  J2 A- }' y% B= B= figure_stretch(fname,1,3);
1 a/ [. f! B! k9 d9 ?% p# h% figure
. t( X8 K4 J7 ?2 I' x# |% imshow(B);: C! Q( J9 U: W* [3 M
% Author :  Haiyang Cui
# d: P9 v4 |6 O/ U2 }5 v/ C% EMail  :  ***7 |/ Y: h6 X, Y: U7 j

# l0 a5 n' {! L) ^6 BA= imread(fname);
3 L( @: P3 j, d[I,J,K]=size(A);6 d  N( F0 H1 e+ U6 k3 T
x0=1:J;
4 H1 p8 k* S9 K% ^: sy0=1:I;0 [* p! ~) a! e* u0 \
[X0,Y0] = meshgrid(x0,y0);
! @' F' |8 b5 AI1 = floor(I*h_scale);
& O* a* o- S3 @4 x3 q7 l& @J1 = floor(J*w_scale);0 }# D9 w# T" Z* T4 L( h

: X+ J* b5 j. I2 M1 l& a5 XR = A(:,:,1);9 c9 o- {& A4 ?! k
G = A(:,:,2);) p/ ^+ m6 E# a, Q7 |: |- h; j# w
B = A(:,:,3);
" s3 z2 E/ ]9 i: [* b8 q- c% W3 @. S  e1 R
% " K# D4 O, [& ^7 S" ?0 t) j
x = 1:J1;
0 F, l: L* H; @) i. A) |) v% B2 ?9 t$ B" cy = 1:I1;  D% d2 g& f0 Q5 G: K, k. E6 z  i
[X,Y] = meshgrid(x,y);
  @5 ?  e, K" _- p. h! [7 z% t5 N% ^# E) e9 I' _% i
X = X*J/J1;
* A3 Y& I0 ^3 z9 ~! CY = Y*I/I1;; n4 j/ ^) R4 }/ ^' t
X = double(X);/ i8 R' p2 h' E* M; c6 q( r5 t. R* H
Y = double(Y);
7 @- @; d  K. B+ n. q+ BR = double(R);  m& s6 X+ c/ i
G = double(G);* T/ O6 Y/ R" R- Q! R' V
B = double(B);
, c* ?5 f0 t' z% T9 {! j- F%+ I  I7 g# L- {+ @/ D1 s) n
R1 = interp2(X0,Y0,R,X,Y);
+ J; h' P4 E& uG1 = interp2(X0,Y0,G,X,Y);
% y  P* K7 ?: V* ]B1 = interp2(X0,Y0,B,X,Y);- z4 ?( h+ g- m! b
C(:,:,1)=uint8(R1);4 t# I! }9 [" T. P* A. z
C(:,:,2)=uint8(G1);7 g; {1 S. v9 q7 G$ i
C(:,:,3)=uint8(B1);( w# v- S4 x/ d+ ?# }* [% Y
end. R3 I2 P+ q8 k6 w3 Q; D

9 g: J2 l- M  {+ P

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-6 03:34 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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