图像由彩色图转化为灰度图的三种方法

一、原理

对于图像由彩色图转化为灰度图有三种方法

分别为 加权法 均值法 最大值法

加权法就是  GRAY==0.3*R+0.59*G+0.11*B

均值法就是 GRAY==(R+G+B)/3

最大值发就是  max(R,G,B)

二、代码

[filename,pathname]=uigetfile({'*.jpg';'*bmp';'*gif'},'选择原图片');
picture=imread([pathname,filename]);%读取RGB格式的图像?

%用加权平均法处理图片
FirstGrayPic=rgb2gray(picture);

%用最大值法处理图片
[rows,cols,colors]=size(picture);%得到原来图像的矩阵的参数?
SecGrayPic=zeros(rows,cols);%创建一个全零的矩阵,这个矩阵用来存储用下面的方法产生的灰度图像?
SecGrayPic=uint8(SecGrayPic);%将创建的全零矩阵转化为uint8格式
R=double(picture(:,:,1));
G=double(picture(:,:,2));
B=double(picture(:,:,3));
for i=1:rows
    for j=1:cols
      SecGrayPic(i,j)=max(max(R(i,j),G(i,j)),B(i,j));
    end
end

%用平均值法处理图片?
[rows,cols,colors]=size(picture);%得到原来图像的矩阵的参数?
ThirdGrayPic=zeros(rows,cols);
ThirdGrayPic=uint8(ThirdGrayPic);
for i=1:rows
    for j=1:cols
        sum2=0;
        for k=1:colors
            sum2=sum2+picture(i,j,k)/3;%用均值法进行RGB到%灰度图像的转换?
        end
        ThirdGrayPic(i,j)=sum2;%将得到的简单平均值作为对应像素点?
    end
end

%显示图像
figure(1);
subplot(2,2,1);
imshow(picture);%显示原来的图像
title('原图片')
subplot(2,2,2);%显示加权平均值图片?
imshow(FirstGrayPic);
title('加权平均值图片');
subplot(2,2,3);%显示最大值图片?
imshow(SecGrayPic);
title('最大值法图片')
subplot(2,2,4);%显示平均值图片?
imshow(ThirdGrayPic);
title('平均值图片')

三、实验结果



  • 6
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值