书籍:《MATLAB图像处理 理论、算法与实例分析》;蔡利梅编著;清华大学出版社
个人学习笔记记录,欢迎交流批评。
1、图像:二维信号f(x,y),可用像素值矩阵表示。
2、视频:三维函数f(x,y,t),t为时间变量。(当时间间隔<=1/24s时,人眼不能感知出停顿)
3、数字图像处理主要内容:包括图像获取、图像变换、图像增强、图像平滑、边缘检测和图像锐化、图像复原、图像压缩编码、图像分割、图像描述和分析、图像匹配、图像融合、图像检索、图像水印、立体视觉、目标检测与跟踪。
Tips:机器视觉区别于计算机视觉,它还包含了成像、控制等技术。
1、颜色模型:
RGB模型:700nm红,546.1nm绿,435.8nm蓝
CMY/CMYK模型:Cyan青色、Magenta品红、Yellow黄色、Black黑色
HSI模型:Hue色调、Saturation饱和度、Intensity亮度
HSV模型:V明度
YIQ:Y亮度、IQ色调
YUV:Y亮度、UV色调
YCbCr模型:亮度、色调
1、图像信号的数字化:经过采样、量化(到0-255)过程。
2、数字图像的类型:二值图像(黑白01)、灰度图像(0-255)、彩色图像(如RGB则为3个0-255矩阵)、动态图像(帧)、索引图像(实际是一种存储方式,存颜色索引值)
3、数字图像格式:JPEG有损压缩、GIF无损压缩、TIFF、PNG无损压缩位图图形、BMP位图。
1、图像文件信息读取:
INFO = imfinfo('C:\Users\Administrator\Desktop\timg\flower.jpg')
% 创建一个图像信息工具
tinfo = imageinfo('C:\Users\Administrator\Desktop\timg\flower.jpg')
2、图像文件数据读取:
Image1 = imread('C:\Users\Administrator\Desktop\timg\flower.jpg');
imshow(Image1)
% 若读取索引图像:
% [X,MAP] = imread(Filename,FMT);
% X存放图像数据,MAP存颜色映射表
imshow(Image1,[0 50])
imtool(Image1)
% 将矩阵中的数据显示为图像
image(Image1)
imagesc(Image1)
% 显示含有多帧的图像
montage(...)
4、像素信息获取与显示:
P = impixel(Image1)
% 弹出图像后,用鼠标选择像素点
% 创建像素信息工具
impixelinfo
5、局部区域的获取与显示(剪切):
%指定剪切矩形的左上角位置,宽,高
RECT = [100,100,200,200];
I2 = imcrop(Image1,RECT);
imshow(I2)
% 将数据取值范围转换到[0,1]
I3 = im2double(Image1)
% im2uint8转换到[0,255]
%im2uint16转换到[0,65535]
% 将数据强制转换为双精度型
I4 = double(Image1);
将矩阵转换为灰度图像
Matrix1 = Image1(:,:,1) % 获得一个矩阵
I5 = mat2gray(Matrix1,[100,250]); %小于100则为0,大于250则为1.0
imshow(I5)
7、图像文件的保存:
% 图像,格式,位置等
imwrite(I5,'C:\Users\Administrator\Desktop\timg\flower5.bmp')
1、彩色图像转换为灰度图像:
I6 = rgb2gray(Image1);
imshow(I6)
I7 = im2bw(Image1,0.5);
imshow(I7)
3、灰度图像转换为彩色图像:
有密度分割法、灰度级变换法、热金属编码变换等
举例密度分割法(即将不同段的赋值不同的的颜色)(灰度变换法可以通过函数进行灰度转换,实现连续取值):
% I6为灰度图
r = I6; g = I6; b = I6; %初始化三个通道
r(I6 <= 50) = 0; r(20 < I6 & I6 <= 100) = 150; r(100 < I6 & I6 <= 200) = 200; r(200 < I6 & I6 <= 255) = 250;
g(I6 <= 50) = 0; g(20 < I6 & I6 <= 100) = 50; g(100 < I6 & I6 <= 200) = 70; g(200 < I6 & I6 <= 255) = 100;
b(I6 <= 50) = 0; b(20 < I6 & I6 <= 100) = 70; b(100 < I6 & I6 <= 200) = 100; b(200 < I6 & I6 <= 255) = 150;
% 合成
I8 = cat(3,r,g,b);
imshow(I8);
[X1,MAP1] = rgb2ind(Image1,16); % RGB转换为只有16种颜色的索引图像
I9 = ind2rgb(X1,MAP1); % 反变换回RGB图像
imshow(I9);
[X2,MAP2] = gray2ind(I6,16); % 将灰度图I6转换为16色索引图像
imshow(X2,MAP2)
I10 = ind2gray(X2,MAP2);
imshow(I10)
1、RGB和HSV转换:
[X3,MAP3] = rgb2ind(Image1,256);
H = rgb2hsv(MAP3); % 将颜色映射表转换到HSV空间
H(:,3) = H(:,3)*1.5; H(H > 1) = 1; % 将亮度增强为原来的1.5倍,,超出1则为1,否则超出范围
MAP4 = hsv2rgb(H);
imshow(X3,MAP4)
%同样:
H1 = rgb2hsv(Image1); % 将图像转换到HSV空间
H1(:,:,3) = H1(:,:,3)*1.5;
I11 = hsv2rgb(H1);
imshow(I11)
rgb2ycbcr()
ycbcr2rgb()
3、RGB和YIQ转换:
rgb2ntsc()
ntsc2rgb()
4、RGB和LAB转换:
rgb2lab()
lab2rgb()
与1、同理,所以略写。