|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我们有一张图片,读进来后,转换为gray,然后打算画两张图,一张用gray的色图,一张用jet的色图。
) R4 _/ }/ ~( q6 F9 h首先我们读取图片:
0 w4 x7 y [9 i M) J% T) o. {clear all;
# q5 ^# k. i( K) W V, rclose all;
3 j- V6 m& {. qclc;
; I, i7 @( ]- \0 ?( s. k%%; G9 W% i' l6 `
imgname='.\frog.bmp';
+ z, |: b2 R- y2 b2 w[imagRGB] = imread( imgname );
" l7 }" j' T8 [9 a
9 ]' P# i D2 ?if (length(size(imagRGB)) > 2)
) t F' D: x9 T+ M% X* } d0 P0 x imagGray = rgb2gray(imagRGB);
# F1 M5 D; c: [5 _0 {* selse1 Q# w3 v L Z7 p9 ]) a
imagGray = imagRGB;
* T: U% M4 q. q5 V- X7 L8 ?end! i) w0 n' M1 a0 ?7 I! ^7 j$ M
clear('imagRGB');. i U5 z$ s7 d" D/ f6 _
data = double(imagGray);+ D3 C( r. `2 m# B
data =flipdim(data,1);
6 Z+ v9 V2 O5 L# J" K# w % Flip linear dimensions (image coordinate system starts at upper left, F; F y) l! |8 e* z4 n' e% D
% corner )
' ^+ X9 U6 I0 p8 h" g/ a# B j& ~$ r& o: T. p
+ X: [( Y, o. a: H8 D: k7 h方法1: 我们生成两个figure,分开画两个图
# z8 |8 m2 U( E$ {0 ]: |6 n$ xfig1=figure;' q4 u1 m. ^! G) D; Y; ?2 A
plotHandles(1) = pcolor( data );/ B# \2 f: j$ Y$ E# ^. |
set( plotHandles(1) , 'EdgeColor' , 'none');
4 Y K4 O2 T& l9 ^+ @) u) Qcaxis([0,255]);
& K! p8 W( T% @. y& kcolormap gray;
i" d2 P; ?* n* C; ^ , Y! Q; t1 J2 Y6 _7 i6 L* A$ C1 E4 u
fig2=figure;
# k' T: G6 u7 e* m0 LplotHandles(1) = pcolor( data );
7 o. E' P8 x, Qset( plotHandles(1) , 'EdgeColor' , 'none');% |4 R- L# \1 u0 V
caxis([0,255])
: D% K3 `& ^( R7 i( h( e' |colormap jet;) a, i1 b3 e# u" O
; m7 S/ j' ?, M& T( t
( b& R3 Z. L7 {# ]2 M- j4 B
: E) X) i& x" f: D {- S3 n& Q
结果如下:
f _, u" T- W: B
) a3 A+ i: C* x* h
注意:这是两个figure,每个figure可以使用一个唯一的colormap
. V: W; z) B+ S2 p% Z
! s* r# F: D( a! [" C6 {* P' }3 E( g- {$ W# z8 P
方法二: 一个figure,subplot
$ l* ^1 I6 N- a Z/ Lfig3=figure;/ e4 u( q/ G* F. b& O1 x' a
. @/ [8 M4 F" V, p* wsubplot(1,2,1);
8 O4 ?# ^/ |( V$ o |1 J) lplotHandles(1) = pcolor( data );7 y, ^8 }: k% P3 l3 W# o1 Q0 H) O: o
set( plotHandles(1) , 'EdgeColor' , 'none');
3 h. ]. _) w! n$ H+ o5 Dcaxis([0,255]);& [2 Y7 p& z% O/ k8 }/ Q2 e
colormap gray;& t/ {# z# G9 {2 v/ V M- d
+ x3 t! X- [( V" e
subplot(1,2,2);. N' D/ o' Q$ R1 r. s4 E2 [
plotHandles(1) = pcolor( data );4 W; T, \- z- y) `. D2 D6 r: ?! c' O
set( plotHandles(1) , 'EdgeColor' , 'none');& q3 g* s) b8 B% [8 H8 R" [; l0 ?
caxis([0,255])& T6 |+ o! g6 ]5 d! X
colormap jet;
7 a2 B. v- I2 l+ W7 y; n5 ~6 [
' K0 B4 b- o8 D( s9 `3 V
1 u K m0 |, r0 L; [结果如何呢?1 T2 e2 C# N1 C3 M
1 t9 s8 i: E- }, z J! e
. B: S7 X( p* [& A/ q; h
: i3 o1 ~4 o, q6 E$ f后面定义的colormap会把前面的覆盖掉。因此最终两张图片都使用了jet的色图。2 I) l$ F& o# X; [. [
# V% c8 C O; K
方法三: 既然只能使用一个colormap,那么我们就自己动手组装我们需要的色图, ^; A8 z: c# { A; Z, t
options.colormaps{1}.offset = 0;6 l( `4 {0 L/ D, u/ o
options.colormaps{1}.num = 256; % Number of colors
# ~6 R1 u% I$ `0 J6 j; I; zoptions.colormaps{1}.cmin = 0 + options.colormaps{1}.offset;
3 O0 M% Q/ G9 t7 T# g% |" b- C6 ^options.colormaps{1}.cmax = 255 + options.colormaps{1}.offset;1 H2 R7 X6 \: V
options.colormaps{1}.map = gray(256);
! U8 Q6 `3 G, x( f- t- J7 D8 {$ z" V, ]# m( n% }8 A
options.colormaps{2}.offset = 256;
" N+ K0 j" W' }9 \) Loptions.colormaps{2}.num = 256; % Number of colors
) p d6 q! b9 Z, ?options.colormaps{2}.cmin = 0 + options.colormaps{1}.offset;
. k: r" t- {/ J* Yoptions.colormaps{2}.cmax = 255 + options.colormaps{1}.offset;
W; `7 _! @ [7 k4 X7 g; w7 Foptions.colormaps{2}.map = jet(256);! W. d' L. O$ P( A' f, C2 V2 u$ C
. t' F% z( { N& F y* U: i m1 Q! Y+ p) y
for iCMap = 1 : length(options.colormaps)
7 N; |" s% g/ u' p) {. c& ]" j, n if iCMap == 1
) X5 u$ K, ?8 W- Q$ [3 O/ { cmap = options.colormaps{iCMap}.map;
1 F, s- R5 N; U9 ~ else
' y( y4 U1 G3 W& f4 k! H cmap = [cmap ; options.colormaps{iCMap}.map ];4 L, J' Q5 _! `% e# V1 x0 o1 O
end
6 i' S$ C) T- E7 `: V1 J- iend
6 {; N4 Y$ W, H0 v# ~
4 G* S$ w7 l9 H3 e3 ?, y0 E
0 v+ D8 r+ R& E2 W我们定义了两个色图,然后把两个色图拼装起来。
B& s3 e x* ?$ X1 i4 _
& ?3 S1 \) h/ |) t# u. Zfig4 = figure;- H0 [+ v6 G! w) w2 `. O
colormap(cmap);
6 c. A+ J' S, W
7 t1 \6 t! C6 u' H# rsubplot(1,2,1);
$ [' {7 E. j0 U% ?data1 = data +options.colormaps{1}.offset;
0 E" H; k. E) r$ w1 K# l5 C- r) XplotHandles(1) = pcolor( data1 );; S. s: t4 j. R
set( plotHandles(1) , 'EdgeColor' , 'none');
5 m _! Z' r3 Dcaxis([0 , size(cmap,1) - 1]);
6 S. Z5 ?3 F/ P2 k+ I( V( Q) s 7 x% x g2 r$ E" C* B
5 R8 P7 I! j* ?# W7 {
subplot(1,2,2);
; c6 h# U o% R R9 x" S0 P. _5 g4 |data2 = data + options.colormaps{2}.offset;
9 O) j0 O9 `; H! B6 j! Z" _! HplotHandles(2) = pcolor( data2 );
8 \7 C( r9 q7 m0 K; o
6 z0 w1 k/ R8 B- M/ N3 lset( plotHandles(2) , 'EdgeColor' , 'none');+ Q5 d2 }) `! s
caxis([0 , size(cmap,1) - 1]);
. ~. p% i+ o, Y9 G: o, o, X$ _7 \7 ^4 u+ [3 ^0 a( h: ^! U
?9 w8 Q+ B: x( v3 k3 O9 I$ @+ ~ `
结果如下:6 P0 y2 L$ U; X$ Z7 }0 }
: f9 P; a( [; `3 M7 v: B& T) p3 ]% E2 b2 l) g* V
实际上我们只有一个colormap,但达到了多个colormap的效果。
' d0 I7 A, U! D9 F1 {
' P1 D: F8 a* h |
|