看了很多书发现,很独例子都可以在mathworks里面找到
https://ww2.mathworks.cn/help/matlab/ref/rgb2gray.html#buiz8mj-1-I
命令
I=rgb2gray(RGB)
将真彩色图像 I
= rgb2gray(RGB
)RGB
转换为灰度强度图像 I
。rgb2gray
函数通过消除色调和饱和度信息,同时保留亮度,来将 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')