MATLAB 图像处理相关知识
%% 读取图像与现实图像
fig = imread('1.jpg');
imshow(fig);
%% 转化为灰度图像
fig_bw = rgb2gray(fig);
imshow(fig_bw);
%% 将图像转化为二值图像
a = imread('1.jpg');
bw1 = im2bw(a,0.5);
%第三个参数介于0--1之间,默认为0.5
%% 图像存储或进行图像格式之间的转化
%将图片数据保存为图片文件
fig = imread('1.jpg');
imweite(fig,'my_picture.jpg');
imweite(fig,'my_picture.jpeg');
fig_gray = rgb2gray(fig);
imwrite(fig_gray,'gray_fig.jpg');
fig_bw = rgb2gray(fig);
imwrite(fig_bw,'bw_fig.jpg');
%% 图像边缘检测
pic = edge(im,'method', parameters)
Method ‘roberts’ Roberts 算子
'sobel' Sobel 算子
'prewitt' Prewitt 算子
'log' LoG 算子
'zerocross' 零交叉方法
'canny' Canny 算子
% im为输入的图像,注意是灰度图像;method为某种算子;parameters是算子的参数
fig = imread('1.jpg');
fig_bw = rgb2gray(fig);
fig_edge = edge(fig_bw,'roberts');
figure,imshow(fig_edge);
title('roberts算子进行边缘检测');
%% 灰度图像的灰度直方图
fig = imread('1.jpg');
fig_gray = rgb2gray(fig);
figure,imhist(fig_gray);
% 二值图像只有黑白两种颜色,而灰度图像在黑白两色之间还有许多级的颜色深度
%灰度图像每个像素点用一个灰度值来表示,
%% 像素深度,存储每个像素点所用的二进制的位数,位数越高,所能表示的颜色种类越多,
%图像表现越细腻,细节越丰富。每个像素点用8位二进制位数来表示,可以有256个灰度级,
%% 自编函数实现灰度图像灰度直方图的绘制
pic = imread('1.jpg');
data = rgb2gray(pic);
figure,imshow(data);
num = ones(1,256);%创建矩阵,用来存储灰度值为i的点的个数
for i = 0:255 % 通过for循环找到灰度值为i的像素点
val = find(data == i);%此处是逻辑判断
num(i+1) = length(val); % 统计像素值为i的像素点的个数,并存储在num中
end
index = 0:255;
stem(index,num,'.');
axis([0 255 0 max(num)]);
xlabel('灰度值');title('灰度图像的灰度直方图');
figure,imhist(data);
%% 图像的RGB通道
pic=imread('1.jpg');
R = pic(:,:,1);%显示图像的三个通道
G = pic(:,:,2);
B = pic(:,:,3);
subplot(221),imshow(pic);
subplot(222),imshow(R);
subplot(223),imshow(G);
subplot(224),imshow(B);
%以上是分别分离处图像的RGB通道,并分别显示出来,
%对于R通道,彩色图像红色区域在R通道中显示发亮,
%对于G通道,彩色图像绿色区域在G通道中显示发亮,
%对于B通道,彩色图像蓝色区域在B通道中显示发亮,
figure;
r = pic;
g = pic;
b = pic;
r(:,:,2) = 0;
r(:,:,3) = 0;
g(:,:,1) = 0;
g(:,:,3) = 0;
b(:,:,1) = 0;
b(:,:,2) = 0;
subplot(221),imshow(pic);
subplot(222),imshow(r);
subplot(223),imshow(g);
subplot(224),imshow(b);
%显示出来的的矩阵r g b仍然是彩色图像,只是对于矩阵r将g通道和b通道都置0,
%对于矩阵g将r通道和b通道都置0,对于矩阵b将r通道和g通道都置0,也可以将其中一个通道置为0,
%或者置为其他数值,但显示出来的矩阵r、g、b是彩色图像
r(:,:,2) = 200;
r(:,:,3) = 100;
g(:,:,1) = 50;
g(:,:,3) = 60;
b(:,:,1) = 80;
b(:,:,2) = 20;
%% 或者是
r(:,:,2) = 200;
g(:,:,1) = 50;
b(:,:,2) = 20;
