|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
+ C, L' {" u. Z4 N1 r) ?需求! Z+ Z# r4 ^6 o( @
7 h( ^2 D9 G% P" {. j! o( ` 直接操作RGB图像的像素点,进行颜色的相关操作。
; Q" J2 y8 i6 q2 Z$ e5 s0 U: _# W( ~, V. E
掌握这个,必须对MATLAB中矩阵的操作有所熟悉,特别是整行、整列的操作。$ |& @- G4 p% y. L' g) n
: c, B7 I/ t! n$ Q6 S
如:/ m/ H0 R1 y2 J; ~/ i
; B, y, D) C _6 s/ k& Q9 C J = [1 2 3; 4 5 6; 7 8 9]; ——这里定义了一个三行三列的矩阵。
5 R" q* d9 j. d9 T1 E$ [& j7 M
9 R# t8 U0 q# B2 q4 M J[:, 1] = 0; ——直接操作了J矩阵中每一行的第1列 此时J = [0 2 3; 0 5 6; 0 8 9]
9 c$ @" B/ {6 v8 \
9 f6 m- S* x1 M 其他如行操作用法类似,不再赘述。
4 F+ C% I/ K: D' Q& F+ a3 R5 @
: h! Q: N* d/ ~) S; _) o , I& Q. \' |9 X. j3 o- a0 h
7 D: v5 }. C5 o! k, h
下面我们对一副图像进行直接操作,把其中的红色部分改为蓝色。: `& C. K% Q; a( r! h3 V$ ^9 v
2 [9 Q( l& l F' ^. i* c' O5 @代码如下:
2 R+ C+ b2 y0 ~) y' y* y" X7 I) V/ J* f$ J' s2 R. 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);7 D e& H$ B7 }6 f9 ~3 I; Y4 V, ?
9 c! v6 O& H, `) t7 U# ^: f
( g" G& G9 y" r( d( }. v& N/ f8 T
1 x' p1 T7 O0 o" Z
运行结果:
( g* e# [6 r. m& u8 \- ?; x6 m4 u转换前:
* C5 i+ R/ | `7 }9 x( M) P$ V+ ]& Y
9 @: |) w# a2 l9 L4 o4 |$ {3 ?3 M
* C1 S7 l2 X; p) `6 g$ O转换后:. i9 h; t* c6 {2 z i
; |4 q8 p9 o; s3 q2 W7 q7 d
! j v; r; _" i. W
. U4 j! o- Q/ m4 K |
|