MATLAB彩色图像处理

MATLAB彩色图像处理

(ps:这篇文章里面用到数字图像处理的工具包,若需要请留言)

一、对彩色图像的表达和显示

%%对彩色图像的表达和显示
%%A.显示彩色立方体
figure,rgbcube(0,0,10);%从正面观察彩色立方体
figure,rgbcube(10,0,10);%从侧面观察彩色立方体
figure,rgbcube(10,10,10);%从对角线观察彩色立方体
%%B.索引图像的显示和转换
f=imread('hei.tif');
figure,imshow(f);
%rgb图像转换成8色索引图像,不采用抖动方式
[X1,map1]=rgb2ind(f,8,'nodither');
figure,imshow(X1,map1);
%采用抖动方式转换到8色索引图像
[X2,map2]=rgb2ind(f,8,'dither');
figure,imshow(X2,map2);%显示效果要好一些
g=rgb2gray(f);%f转换为灰度图像
g1=dither(g);%将灰色图像经过抖动处理,转换打二值图像
figure,imshow(g); %显示灰度图像
figure,imshow(g1);%显示抖动处理后的二值图像

二、彩色空间转换

%%%彩色空间转换
f=imread('hei.tif');
figure,imshow(f),title('原图')
%%%转换到NTSC彩色空间
ntsc_image=rgb2ntsc(f);
figure,imshow(ntsc_image(:,:,1));title('NTSC亮度');%显示亮度信息
figure,imshow(ntsc_image(:,:,2));title('NTSC色差');%显示色差信息
figure,imshow(ntsc_image(:,:,3));title('NTSC饱和度');%显示饱和度信息
%%%转换到HIS彩色空间
hsi_image=rgb2hsi(f);
figure,imshow(hsi_image(:,:,1));title('HIS亮度');%显示亮度信息
figure,imshow(hsi_image(:,:,2));title('HIS色差');%显示色差信息
figure,imshow(hsi_image(:,:,3));title('HIS饱和度');%显示饱和度信息

三、彩色变换

%%彩色变换
f=imread('hei.tif'); 
G=ice('image',f);%打开ice窗口对图像进行调整
%在窗口中执行以下操作:
%a)得到图像的补色
%b)拖动映射曲线,对图像显示效果进行修改
%c)在颜色通道中选中某一颜色,然后对映射曲线进行修改

%%%%f2=imread('hei.tif'); 
%%%%figure,imshow(f2);
%在CMYK彩色空间内打开图像
%%%%g2=ice('image',f2,'space','CMYK');
%f2的图像色彩偏红,拖动映射曲线,
%调整映射参数,使图像的色彩看起来比较正常。

四、彩色图像分割

%%彩色图像分割
%%A.彩色边沿检测
f=imread('hei.tif');
%%%直接计算彩色边缘VG,并得到对单独彩色平面的二维梯度求和形成的梯度PPG
[VG,A,PPG]=colorgrad(f);
figure,imshow(VG,[ ]);%显示彩色梯度图像
figure,imshow(A,[ ]);%显示彩色梯度对应的角度图像
figure,imshow(PPG,[ ]);%%显示分量梯度图像
g=VG-PPG;%计算两种梯度方法得到的梯度之差
figure,imshow(g,[ ]);
%%B.彩色图像分割
f=imread('hei.tif');
mask=roipoly(f);%手工选定图中红色区域
R=immultiply(mask,f(:,:,1));%取得选定区域图像的红色分量
G=immultiply(mask,f(:,:,2));%取得选定区域图像的绿色分量
B=immultiply(mask,f(:,:,3));%取得选定区域图像的蓝色分量
g=cat(3,R,G,B);%取得选定区域的RGB图像
figure,imshow(g);%显示取得选定区域
[M,N,K]=size(g);%选定区域的大小
I=reshape(g,M*N,3);%对g中的像素进行重排,按列序拉成一行
idx=find(mask);%找到mask中的像素在重排后的图像g中位置
I=double(I(idx,1:3));%转换到double类型
[C,m]=covmatrix(I);%计算协方差矩阵C主对角线上的元素,即方差
%>>sd=sqrt(d)%求得这些元素的平方根,即均方差
%%%用欧式距离对图像进行彩色分割,阈值为25
E25=colorseg('euclidean' ,f,25,m);
E251=f;
E251(E25==0)=0
figure,imshow(E251,[]);
%用马氏距离对图像进行彩色分割,阈值为25
M25=colorseg('mahalanobis' ,f,25,m,C);
figure,imshow(M25,[ ]);

五、怎样将彩色图像转换到灰度图像,并根据灰度值对此灰度图像进行索引化手工指定索引表中的RGB值,并把此索引图像显示出来.

f=imread('hei.tif');
figure,imshow(f);
f1=rgb2gray(f);
figure,imshow(f1);
[x,map]=gray2ind(f1,128);
figure,imshow(x);
map(1,:)=0.5;
map(:,1)=0.5;
map(2,:)=0.4;
map(1,1)=0;
figure,imshow(f1,map);
  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值