目录
1.1 图片的读写和显示
1.2 彩色图、灰度图和二值化
RGB分离与合并
彩色图转灰度图 rgb2gray
对灰度图进行二值化 (0或1) imbinarize
1.3 MATLAB 中图像处理相关函数
调整图像大小 imresize
旋转图像 imrotate
图像的加减乘除
%960*960*3 : 像素点的个数,对应矩阵大小
% 矩阵元素值的范围 :0:255,0:黑色,255:白色
%uint8 :unsigned int 8 无符号整型
pic = imread("xiaofen.jpg")
imshow(pic);
t = pic(60:100,60:100); % 展示出局部
% 部分矩阵对应部分图片
imshow(t )
%自己画图像
m = randi ([0,255],[400,400]); %生成随机矩阵 矩阵是0到255,
% m是double型,应该转化成 无符号整型
m = uint8(m);
imshow(m);
%生成一个渐变图像
bw = zeros([256,400]); % 有256行400列的 值为0 (全0矩阵)
for i = 1:256
for j = 1:400
bw(i,j) = i ;% i行的所有列的值为i
end
end
bw = uint8(bw);
imshow(bw)
% 保存图片
imwrite(bw,"bw.jpg");
% RGB三通道分离
% 矩阵的索引
pepper = imread("peppers.png");% 行 列 页
imshow(pepper);
R = pepper(:,:,1);
G = pepper(:,:,2);
B = pepper(:,:,3);
subplot(221);
imshow(pepper);
title("original");
subplot(222);
imshow(R);
title("R");
subplot(223);
imshow(G);
title("G");
subplot(224);
imshow(B);
title("B");
rgb(:,:,1) = R;
rgb(:,:,2) = G;
rgb(:,:,3) = B;
imshow(rgb);
pepper_gray = rgb2gray(pepper);
imshow(pepper_gray);
% 自己写函数
pepper_gray = rgb2gray(pepper);
[row,col] = size(pepper_gray);%获取pepper_gray 的行列数
for i = 1:row
for j = 1:col
if pepper_gray(i,j) >128 %阈值是128
pepper_gray(i,j) = 1;
else
pepper_gray(i,j) = 0;
end
end
end
figure;
pepper_bw = logical(pepper_gray);
imshow(pepper_bw);
% 自带函数 (自带阈值)
% method - 用于二值化图像的方法:'global' (默认) | 'adaptive'
% 'Sensitivity' - 自适应阈值的敏感度因子:0.50(默认) | [0,1]
% 'ForegroundPolarity' - 确定哪些像素被视为前景像素:'bright'(默认) | 'dark'
% 'bright':前景比背景亮
% 'dark' :前景比背景暗
pepper_gray = rgb2gray(pepper);
bw = imbinarize(pepper_gray,"adaptive","ForegroundPolarity","bright","Sensitivity",0.5);
imshow(bw);
I = imread("peppers.png");
imshow(I );
J = imresize(I,0.5); %把J放大0.5倍
imshow(J );
K = imresize(I,[200,200]); %指定大小
imshow(K );
旋转图像 imrotate
J = imrotate(I,30);
imshow(J );
% imadd() 两幅图像相加,要求大小一致
% imsubtract()
% immultiply() 矩阵的点乘
% imdivide() 矩阵的点除
J = imadd(I,50);
imshow(J );
% 两幅图片也可以相加 但是大小得一样(本质上是矩阵相加)
I = imread('rice.png');
imshow(I );
J = imread('cameraman.tif');
imshow(J );
K = imadd (I,J); % 相加
imshow(K );
L = imsubtract(I,J); % 相减
imshow(L );
M = immultiply(I,0.5); % 乘法
imshow(M );