|  | 
 
| 
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  # V, v8 k" m% |7 C& |: D. N需求# f, ]; Q" S, m* |
 
 1 F4 Q  W0 ~! L% h        直接操作RGB图像的像素点,进行颜色的相关操作。: g" c# H$ b1 @/ s
 . Y' k" ^+ o3 E
 掌握这个,必须对MATLAB中矩阵的操作有所熟悉,特别是整行、整列的操作。
 6 {; V. w' L$ j7 }5 h* K- \$ a% {! ]
 如:, q5 ~/ n. m1 f) {" b2 G+ X
 $ _9 H4 t& k! f, O- a2 j
 J = [1 2 3; 4 5 6; 7 8 9]; ——这里定义了一个三行三列的矩阵。
 , s/ B$ O4 V. G2 h6 o4 T4 Q
 8 ~' r) G- A) Z4 e6 Y           J[:, 1] = 0; ——直接操作了J矩阵中每一行的第1列 此时J = [0 2 3; 0 5 6; 0 8 9]0 F6 a$ n+ ?% [3 V
 
 5 B  P$ K7 F& y0 I8 R- s7 I" D: q1 Z$ E           其他如行操作用法类似,不再赘述。1 M; [: c* o0 \6 S% T/ t) l  k3 T2 v
 
 8 {# q! n4 h9 p
 9 l- y, _) S, a
 . y" v" a4 x- g& T8 P2 D8 [     下面我们对一副图像进行直接操作,把其中的红色部分改为蓝色。; r% Z1 h% m8 e1 g: T/ D4 J. B' r% [
 0 J1 b& S) e( }. [
 代码如下:" P9 g& k) n% C6 H' R
 
 : K- T1 B6 f& ?2 C% Y* T
 4 A. M+ ^2 W- X0 V# K- C% BY   SCOTT                                                                                                                                              % red2blue% change red to blueclear all;clc;rgb = imread('red2blue.png');figure;imshow(rgb);R=rgb(:,:,1); %redG=rgb(:,:,2); %greenB=rgb(:,:,3); %blue[x,y,z]=size(rgb);for i=1:x    for j=1:y        if( (R(i,j) >= 180) && (R(i,j) <=255) && (G(i,j) <50) && (B(i,j) <50) )            R(i,j) = 0;            G(i,j) = 162;            B(i,j) = 232;        end    endend% in this way% blue(:,:,1)=R(:,:);% blue(:,:,2)=G(:,:);% blue(:,:,3)=B(:,:);% another wayfor i=1:x    for j=1:y        blue(i,j,1) = R(i,j);        blue(i,j,2) = G(i,j);        blue(i,j,3) = B(i,j);    endendfigure;imshow(blue);# f; q$ f/ b7 k% Q2 h' q
 
 ) O6 j, t' j0 `; T1 [; w% ~$ e1 m  q, C% K6 X' {" Q5 }, w
 运行结果:
 9 k' C2 U) h: V0 H转换前:' M5 y! y; k4 U2 U* R- P5 S
 7 F9 v0 P3 V0 E% \
 
  + l  _! n: A9 |% \. Z; t4 e1 m 1 O; s; L) q3 q) ~! ?# e/ e
 转换后:
 7 ?% B+ Q3 x9 g* Z% |3 O0 t8 U+ c* |; l, U6 `7 a# l1 v
 
   3 j8 c: y" A+ Y2 P/ x9 }4 f
 $ s1 ]1 s) K. h+ C
 | 
 |