matlab中灰度图转化逆转化以及二值化理解

看了很多书发现,很独例子都可以在mathworks里面找到

https://ww2.mathworks.cn/help/matlab/ref/rgb2gray.html#buiz8mj-1-I

命令

I=rgb2gray(RGB)

I = rgb2gray(RGB) 将真彩色图像 RGB 转换为灰度强度图像 Irgb2gray 函数通过消除色调和饱和度信息,同时保留亮度,来将 RGB 图像转换为灰度图。如果已安装 Parallel Computing Toolbox™,则 rgb2gray 可以在 GPU 上执行此转换

 

将 RGB 图像转换为灰度图像

Try This Example 

读取并显示 RGB 图像,然后将其转换为灰度图。

读取示例文件 peppers.png 并显示 RGB 图像。

RGB = imread('peppers.png');
imshow(RGB)

关于算法权重

 

函数算法

灰度化处理有多种处理方式:分量法 最大法 平均法 加权平均法

Matlab 中采用的是对R、G、B分量进行加权平均的算法:

0.2989R+ 0.5870G + 0.1140B

代码如下

A=imread('path...test.jpg');

imshow(A);

B=rgb2gray(A);

imshow(B);

错误提示:map must be a m x 3 array这是因为要求rgb必须为3维矩阵。而我最开始写代码忘了加上imread,直接采用了A=('1,jpg'),相当于个变量A一个字符串,字符串是1维的,因此在后面使用转灰度的时候,命令无法执行。加上imread之后,matlab 自动将rgb图片转化为3维矩阵,命令得以执行。

 

二值化的代码

该方法有很多综述性的文章

https://www.cnblogs.com/dawnminghuang/p/3849905.html

第一种是matlab自带的

先设置thresh阈值,然后将矩阵分割维二元色彩。

thresh=graythresh(B)  //此时B为灰度图矩阵,该命令是自动计算与阈值.

C=im2bw(B,thresh)

imshow(C)

 

注意:1-rgb图片也可以采用graythresh命令

2-通过对比,rgb转gray之后再二值化,与rgb直接通过graystresh得到的二值化矩阵相同。

3-但是他们的thresh并不一致。ps  thresh是matlab 自己计算的。

第二种二值化方法 迭代法转自博客园

主函数读取图片部分:

clc;          //https://blog.csdn.net/joyzhaonan/article/details/45602169  清除命令窗口

clear all;  //清楚工作空间workspace
[fn pn fi]=uigetfile('*.*','choose a picture');  //ui界面读取图片
Img=imread([pn fn]);
Img_gray=rgb2gray(Img);
Img_bw=binary_bernsen(Img_gray);%这里修改对应的函数
figure;
imshow(Img_bw); 
imwrite(Img_bw,'bw.jpg')

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值