matlab 彩色转为黑白,彩色图转为灰度图和黑白图方法

浏览量:

1,012

(在苹果系统下,如果文章中的图片不能正常显示,请升级Safari浏览器到最新版本,或者使用Chrome、Firefox浏览器打开。)

在图像处理中,我们通常把彩色图像转为灰度图像,或者黑白图,然后再实现一些相关的计算和识别,比如图像识别等,是计算机视觉方面最常用的一种基本方法。进行了转换之后,很多事情就变得简单方便起来。

我们都知道,图片可以看作是一个矩阵,一个包含RGB的彩色图片,可以看作为三维的矩阵。第一维是长,第二维是宽,第三维依次代表着G、B、R的值,可以看作这三种颜色叠加而成。

彩色图像转为灰度图像的时候,我们只需将每一个像素点的RGB三种原色按一定的系数比例求期望值,然后将每一个像素的RGB值全部置为该点的期望值即可。彩色图像转为灰度图像的RGB系数分别为0.299、0.587、0.114,那么我们可以得到以下公式:

Y = 0.299 R + 0.587 G + 0.114 B

假设我们在磁盘D盘有一个img.jpg的图片文件,你可以使用任意图片来实验,建议尺寸别太大,否则计算时间可能会较长。图片的格式读取起来相对较复杂,尤其是文件头,而且也是不好处理,为了方便起见,我们使用MATLAB来实现:

I = imread('D:\img.jpg');

[row,col,m]=size(I);

figure(1);

imshow(I);

%imwrite(I,'D:\r0.jpg');

J(row,col,m)=0;

for i=1:row

for j=1:col

J(i,j,1:3) = (0.114*I(i,j,1)+0.587*I(i,j,2)+0.299*I(i,j,3));%系数依次为GBR的系数

J(i,j,1:3)=J(i,j,1:3)./255;

end

end

figure(2);

imshow(J);

通过以上代码我们就可以实现彩色图像转为灰度图像了。如果我们还要转为黑白图片怎么办?那就在灰度图片的基础上进行0-1二值化。我们首先求整个矩阵的期望值,以此作为二值化的临界点,然后遍历每一个像素点,当大于等于这个值时,我们将其更改为1,否则更改为0,部分MATLAB编译器需要更改为255和0。同样,我们继续使用MATLAB来实现:

K(row,col,m)=0;

qiwang=mean(J);

for i=1:row

for j=1:col

if(J(i,j,1)>=qiwang)

K(i,j,1:3)=1;

else

K(i,j,1:3)=0;

end

end

end

figure(3);

imshow(K);

这样一来,一幅黑白图片又生成了。如果我们想将图片保存下来,可以再使用以下代码:

imwrite(J,'D:\r1.jpg');

imwrite(K,'D:\r2.jpg');

最后我们再来做一个时间复杂度分析,由于图片是三维矩阵,其中一维维度固定为3,所以,设图像长为m宽为n,那么耗时为m*n*3,计算的时间复杂度为O(m*n)。由此可以看出一般情况下的时间复杂度近似为n2 。

写在最后:

鉴于本人水平有限,如果文章中有什么错误之处,欢迎指正,非常感谢。

版权声明本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。本文地址: https://blog.ailemon.me/2017/02/27/color-image-to-grayscale-and-black-white/ All articles are under Attribution-NonCommercial-ShareAlike 4.0

关注“AI柠檬博客”微信公众号,及时获取你最需要的干货。

format,png

format,png

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值