读取文件
**pic = imread("Imagw\\pic.jpg");**
返回值为三维数组(彩色图片);黑白图片(数值矩阵),矩阵的大小对应的是图片的像素大小
显示图片文件
**temp = pic(60:100; 60:100); imshow(temp);**
构造图像
**m = randi([0, 255], [400, 400]); % 转换类型为uint8 m = uint8(m);**
构造渐变的图像:
**bw = zeros(256, 400);
for i = 1:256
for j = 1:400
bw(i, j) = i;
end
end
bw = uint8(bw);**
保存图像
**imwrite(bw, "Image\\bw.jpg");**
RGB分离与合并
**% 自带的图像;
prepper = imread("pepper.png");
R = pepper(:, : ,1);
G = pepper(:, : ,2);
B = pepper(:, : ,3);
% 显示图片
subplot(2, 2, 1);
imshow(pepper);
title("original");
subplot(2, 2, 2);
imshow(R);
title("R");
subplot(2, 2, 3);
imshow(G);
title("G");
subplot(2, 2, 4);
imshow(B);
title("B");**
RGB合并
**rgb(:, : ,1) = R; rgb(:, : ,2) = G; rgb(:, : ,3) = B; imshow(rgb);**
彩色图转灰度图 rgb2gray
**pepper_gray = rgb2gray(pepper);**
二值化 imbinarize手动实现:设定阈值,高于阈值为1,低于阈值的置为0
**pepper_gray = rgb2gray(pepper);
[row, col] = size(pepper_gray);
for i = 1:row
for j = 1:col
if pepper_gray(i, j) > 128
pepper_gray(i, j) = 1;
else pepper_gray(i, j) = 0;
end
end
end
% open a new figure window figure;
pepper_bw = logical(pepper_gray);**
说明:转换之后的图片只有0或者1;直接输出显示是一个近似全黑的图片;可以先把他转化为逻辑值在输出,即可看到效果图自动实现:
**pepper_gray = rgb2gray(pepper);
bw = imbinarize(pepper_gray, "adaptive","Foregroundpplarity","bright","Sensitivity",0.4);
imshow(bw);**
参数:method-用于二值化图像的方法:'global'(默认)|‘adaptive'‘Sensitivity'-自适应阅值的敏感度因子:0.05(默认)|[0,1]范围内的数值'ForegroundPolarity'-确定哪些像素被视为前景像素:‘bright'(默认)|‘dark''bright':前景比背景亮dark':前景比背景暗
调整图像大小 imresize
**I = imread("pepper.png"); j = imresize(I, 0.5); k = imresize(I, [200,200]);**
说明:第二个参数是放大的倍数;也可以指定大小
旋转图像 imrotate
**J = imrotate(I, 45);**
说明:逆时针旋转,第二个参数为旋转的角度
图像的加减乘除
**J = imadd(I, 50)**
给图片的每个元素加了50,效果为图片变亮了
**J = imread('rice.png'); J = imread("camerman.png");
K = imadd(I ,K);**
可以将两幅图片进行相加,但是两幅图片的尺寸必须相同;效果为整体变亮,正片叠底两个图片也可以相减,整体推图片会变暗:
**L = imsubtract(I, J);**
图片可以和数字相乘,也可以和图片相乘:可以整体偏暗或偏亮
**L = immultiply(I ,2);**
直方图和直方图均衡化
**I = imread('trie.tif');imhist(I);% 均衡化J = histeq(I);**
连通分量四连通分量和八连通分量:
**BW = logical([......])L = bwlable(BW, 4);**
bwlable第二个参数为4:四连通分量;8:八连通分量通过连通分量可以实现图片计数:
**max(max(L))**
max(L)返回了最大值的索引;max(max(L))根据最大值索引找到了最大值索引对应的值;这里返回了区块的数量;
**I = imread("coins.png");
bw = imbinarize(I);
L = bwlable(bw, 8);
max(max(L));**