|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
, T- K ]7 A ?" o$ ~: @需求6 C8 r# }; q: z' C/ Q/ ]
- o, n) g- r1 G& Z( c 直接操作RGB图像的像素点,进行颜色的相关操作。
7 }7 ]. u3 F# B b {: y. [4 n6 E4 N2 Z9 W
掌握这个,必须对MATLAB中矩阵的操作有所熟悉,特别是整行、整列的操作。2 Q; E1 L$ A# @. Z; e
6 O) N$ X5 |' ^0 O
如:
% e8 N% L) V' {6 x( {+ h0 ]0 K: V; h, X$ ~3 s
J = [1 2 3; 4 5 6; 7 8 9]; ——这里定义了一个三行三列的矩阵。
( A8 K' }4 d( z7 `4 @0 C. g+ y5 `* L( l" \/ P5 z
J[:, 1] = 0; ——直接操作了J矩阵中每一行的第1列 此时J = [0 2 3; 0 5 6; 0 8 9]0 d; r, C! `2 d8 B1 o n
# B$ ^$ l* _# }6 \/ s 其他如行操作用法类似,不再赘述。
4 C% t. o, ]5 Z4 |5 m/ ]. D) s0 W3 k8 |% f$ i( {( ^ v
" w& X' \8 v0 U$ E% K# p
- z: ~4 A* P Y- q$ m" u9 B! [ 下面我们对一副图像进行直接操作,把其中的红色部分改为蓝色。: m) |! u1 H" P0 J+ ]
, K9 { i, I4 t1 k
代码如下:5 \" ]3 v; ]; a! G% I/ y5 N
- G! a2 A3 N O. u- % BY SCOTT % red2blue
- % change red to blue
- clear all;
- clc;
- rgb = imread('red2blue.png');
- figure;
- imshow(rgb);
- R=rgb(:,:,1); %red
- G=rgb(:,:,2); %green
- B=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
- end
- end
- % in this way
- % blue(:,:,1)=R(:,:);
- % blue(:,:,2)=G(:,:);
- % blue(:,:,3)=B(:,:);
- % another way
- for 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);
- end
- end
- figure;
- imshow(blue);/ z1 R4 n+ x" v; p7 g! ^
: ]' ?5 J2 b- m* U, n3 {' y) e+ e8 K" }
( J9 S. k( e* V" n/ ?# T% }$ z. M运行结果:
8 O9 b+ {& @1 `) R7 Z转换前:
! Q8 z. n- ~6 T' R: e1 N) i) y7 R% n
- u) e/ M0 Y; w
5 C" Q) @2 Z6 I* ?
转换后:
. p1 i7 q5 G# R
8 W% Q, ]4 j! x- K) _
) r8 I+ T* u5 A$ x C2 t4 ?* ~2 W. I% l2 P7 H1 T: b" B4 v y
|
|