200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > RGB图像 索引图像 灰度图像 二值图像相互转换

RGB图像 索引图像 灰度图像 二值图像相互转换

时间:2023-04-25 10:45:37

相关推荐

RGB图像 索引图像 灰度图像 二值图像相互转换

%小白从零开始学习图像处理,自己看的不知道理解的是不是正确,在慢慢进步

1.将RGB图像转换为灰度图像

close all

clear all

clc

RGB=imread(‘haixiquan.jpg’); %读取RGB图像

gray=rgb2gray(RGB); %将RGB图像转换为灰度图像

figure;

set(0,‘defaultFigurePosition’,[100,100,1000,500]);%设置显示图像的窗口大小

set(0,‘defaultFigureColor’,[1 0 0]);%设置显示的背景颜色

subplot(121),imshow(RGB),title(‘RGB图像’);

%subplot是图像分割函数,imshow是显示图像函数,title是在图像上面加标题

subplot(122),imshow(gray),title(‘灰度图’);

首先对各个函数理解一下

1.imread() 就是调入图像

2.rgb2gray() 就是RGB转换为灰度的函数

3.set(0,‘defaultFigurePosition’,[100,100,1000,500]); 设置显示图像的窗口位置大小,100,100 是图形显示在窗口的位置坐标,换一下大小就可以看出来,1000,500是显示figure的大小

4.title 就是图片上标题

5.set(0,‘defaultFigureColor’,[1 0 0]); 设置显示的背景颜色,[0 0 0]显示黑色背景,[1 0 0]显示背景是红色

2.彩色索引表换位灰色索引表

close all

clear all

clc

RGB=imread(‘haixiquan.jpg’); %提取RGB图像

[X,map]=rgb2ind(RGB,0.2); %将RGB图像转变为索引图像,获得map表

newmap=rgb2gray(map); %将彩色的索引表换为灰色索引表

figure;

set(0,‘defaultFigureColor’,[0 0 0]);

subplot(131),imshow(X,map);

subplot(132),imshow(X,newmap);

subplot(133),imshow(RGB);

所用一些函数的解释

这里解释一下 [X,map]=rgb2ind(RGB,0.2) %RGB转换为索引图像时有常用三种不同的转换方法,最小方差转换、均匀量化转换和颜色近似法转换。

3.RGB图像转换为索引图像

close all

clear all

clc

RGB=imread(‘haixiquan.jpg’);

[X1,map1]=rgb2ind(RGB,64);

[X2,map2]=rgb2ind(RGB,0.2);

map3=colorcube(128);

X3=rgb2ind(RGB,map3);

figure;

set(0,‘defaultFigurePosition’,[100,100,500,500]);

set(0,‘defaultFigurecolor’,[0 0 0]);

subplot(221),imshow(X1,map1),title(‘最小方差’);

subplot(222),imshow(X2,map2),title(‘均匀方差量化’);

subplot(223),imshow(X3,map3),title(‘颜色近似法转换’);

subplot(224),imshow(RGB),title(‘原图’);

解释一下这个图像转换中遇到的问题

[X1,map1]=rgb2ind(RGB,64) %就是使用最小方差量化将RGB图像转换为索引图像X. MAP最多包含N种颜色。 N必须<= 65536。

[X2,map2] = rgb2ind(RGB,TOL) %使用均匀量化将RGB图像转换为索引图像X. map最多包含(FLOOR(1 / TOL)+1)^ 3种颜色。 TOL必须介于0.0和1.0之间。这里FLOOR=1,当TOL等于0.2时,则表示216种颜色。

map3 = colorcube(128);

X3 = rgb2ind(RGB,map3);

%上面的两行代码则是创建一个指定颜色数目的所以表,然后用这个索引表进行近似显示RGB图。colorcube增强的彩色立方体颜色。colorcube(M)返回一个包含彩色立方体的M-by-3矩阵。 colorcube本身的长度与当前的色彩映射相同。 彩色立方体在RGB色彩空间中包含尽可能多的定期间隔的颜色,同时尝试提供更多的灰色,纯红,纯绿和纯蓝色的步骤。 该多维数据集的算法灵感来自默认的Macintosh系统colortable,对于M = 256,colorcube返回完全相同的颜色。 对于M <8,返回长度为M的灰色斜坡。

%这段全是抄的,我是TM的没看懂,还有那个抖动的原理,算了算了等再学一算时间看看能不能有所理解。

4.灰度图像转换为索引图像

close all

clear all

clc

RGB=imread(‘haixiquan.jpg’);

gray=rgb2gray(RGB);

[X,map]=gray2ind(gray,16); %转换为16中颜色的索引表

figure;

set(0,‘defaultFigureposition’,[200 200 500 500]);

set(0,‘defaultFigurecolor’,[1 0 0]);

subplot(131),imshow(RGB),title(‘RGB图像’);

subplot(132),imshow(gray),title(‘灰度图像’);

subplot(133),imshow(X,map),title(‘索引图像’);

5.灰度图像转换为二值图像

close all

clear all

clc

RGB=imread(‘haixiquan.jpg’);

gray=rgb2gray(RGB);

BW1=im2bw(gray,0.4);

BW2=im2bw(gray,0.7);

figure;

set(0,‘defaultFigureposition’,[150 150 500 500]);

set(0,‘defaultFigurecolor’,[1 1 0]);

subplot(221),imshow(RGB),title(‘RGB图像’);

subplot(222),imshow(gray),title(‘灰度图像’);

subplot(223),imshow(BW1),title(‘阈值0.4二值图像’);

subplot(224),imshow(BW2),title(‘阈值0.7二值图像’);

%自己理解的解释

阈值就是灰度图像转换后矩阵里的数例如255转换为double浮点类型1.000

其他的数也发生变化但是再0-1之间,这样和阈值对比,大于阈值为1(白),小于阈值为0(黑)。

6.RGB图像直接转变为二值图像

close all

clear all

clc

RGB=imread(‘haixiquan.jpg’);

BW1=im2bw(RGB,0.3);

BW2=im2bw(RGB,0.7);

figure;

set(0,‘defaultFigureposition’,[150 150 500 500]);

set(0,‘defaultFigurecolor’,[1 1 0]);

subplot(131),imshow(RGB),title(‘RGB图像’);

subplot(132),imshow(BW1),title(‘阈值0.3二值图像’);

subplot(133),imshow(BW2),title(‘阈值0.7二值图像’)

%总结一下遇到的问题

1.在调用set函数时有关背景颜色显示时候的矩阵是不是[0 0 0]这个是不是就是RGB三原色的那个三位矩阵的意思,感觉是这个意思。

2.有关索引图像那三种转换算法不理解

3.先将RGB图像转换为灰度图像然后再转换为二值图像与RGB直接转换为二值图像有什么区别,有关uint8,double,logical图像转换还是不清楚,慢慢来喽

%后天要考6级了,裸考听力,加油 冲冲冲

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。