关于数字图像处理考试
我们学校这门科目是半学期就完结哦,同学们学习的时候要注意时间哦。
选择题不用管,到时候会有各种版本的复习资料的。
以下这些东西可能会是大题的重点:
我根据平时代码总结的,供参考
基本操作:
1.读图:imread(‘图片路径’)
2.显示图:imshow(图片)
3.开新窗口:figure()
4.rgb转灰度图:rgb2gray(图片)
5.灰度图合成彩色图:图片 = cat(3,灰度图1,灰度图2,灰度图3);
实验三(直方图与直方图均衡化):
1.获取灰度直方图:a_直方图 = imhist(图片)
2.对图像进行直方图均衡化:a_均衡化 = histeq(图片)
3.对图像进行指定直方图的规定化:a_规定化 = histeq(图片,规定的直方图)
实验四(最邻近插值和双线性插值):
1.matlab 自带的函数imresize(图片,放缩倍数或者缩放后的尺寸,插值方式)
2.imresize(图片,2,’nearest’) 这个是按最邻近插值方式,按2倍放大
3.Imresize(图片,2,’bilinear’) 这个是按双线性插值方式,按2倍放大
4.imresize(图片,[500,500],’nearest’) 这个是按最邻近插值方式,指定放大后尺寸为500x500
5.Imresize(图片,[500,500],’bilinear’) 这个是按双线性插值方式,指定放大后尺寸为500x500
6.双线性插值公式原理:
7.最邻近插值公式原理:求映射后的最邻近下标
实验五(平滑滤波器):
1.添加噪声:
j1 = imnoise(图片,‘salt’,0.02);%椒盐噪声
j2 = imnoise(图片,‘gaussian’,0,0.01); %高斯
j1 = imnoise(图片,‘poisson’); %泊松
j1 = imnoise(图片,‘speckle’,0.04); %乘法
2.使用均值滤波器 imfilter(图片,滤波核):
Moban = one(3,3)/9; //设置滤波核
均值滤波后图片 = imfilter(图片,Moban);
3.使用中值滤波器 medfilt2(图片,窗口大小):
中值滤波后图片 = medfilt2(图片,[3,3]); 这里[3,3]表示滤波器窗口大小为3x3
注意: medfilt2()函数只能用于处理灰度图即只有一个维度的图。
实验六(锐化):
可以使用imfilter()函数实现:
先设置算子:
A = [0,-1,0;
-1,4,-1;
0,-1,0];
边缘 = imfilter(原图,A);
锐化后图片 = 边缘+原图
实验七(傅里叶变换和频域处理):一般不考
实验八(彩色图像):
1.裁剪图像:imcrop(图片,区域);
如:
rect = [区域左上角横坐标,区域左上角纵坐标,区域右下角横坐标,区域右下角纵坐标]
imcrop(图片,rect);
2.按比例合成:
合成后图片 = 比例1x图片1+比例2x图片2
3.将图像从 RGB 颜色空间转换为灰度空间,分别用加权法、均值法和最大值法、以及 matlab 自带的函数 rgb2gray:
啊这个函数怎么要自己实现啊,那就没有太大的必要来记,毕竟填空题因人而异,我这里用的是遍历,I是原图,S是处理后的图,没太大看的必要。
4.亮度增强:
CMYK亮度增强:增强后图 = 增强系数* imcomplement(原图)
实验九(图像压缩):要记住书上怎么编码的
1,求熵值/平均信息量:
核心思想就是求出每个灰度的概率,再通过公式累加计算:
熵 =
G=256; %图像的灰度级
[height,width] = size(I); %获取输入值的高和宽
[count,x] = imhist(I,G);
p = count; %原始灰度直方图
I_size = height*width;
H_x = 0;
for i=1:256 %循环
p(i) = count(i)/I_size;
if p(i)~=0; %如果像素点的概率不为零
H_x=-p(i)*log2(p(i))+H_x; %求熵值的公式
end
end
H_x就是平均信号量,即熵
2,哈夫曼编码:代码没太大看的必要
原理大家应该都懂,代码大伙们都是抄的这个吗?(ω )
[M,N] = size(I);%将图像转为二维矩阵
I1 = I( : );%转为一维向量
k = 0:255;
dict = huffmandict(k,p); %根据灰度级k和概率数组P生成Huffman字典
enco = huffmanenco(I1,dict);
deco = huffmandeco(enco,dict); %哈夫曼解码
Ide = col2im(deco,[M,N],[M,N],‘distinct’); %把向量重新转换成图像块;
3,压缩率:
B=length(enco);
sumcode=length(deco);%编码后比特长度
CR=sumcode/B;%计算压缩率
disp([‘原始图像 Bit: ‘,num2str(B),’ bit’]);
disp([‘压缩图像 Bit: ‘,num2str(sumcode),’ bit’]);
disp(['压缩率: ',num2str(CR)]);
这些就都考考选择题吧,或者填空题算算。
实验十(形态学):
1.生成结构:
% 生成方形,圆形,菱形结构:
rectangle = strel(‘rectangle’,[5 10]); % 生成5x10大小的矩形
circle = strel(‘disk’,5); % 生成半径为5的圆形
square = strel(‘square’,5); % 生成5x5大小的正方形(也就是菱形)
2,腐蚀:imerode(图片,结构);
3,膨胀:imdilate(图片,结构);
4,开运算:imopen(图片,结构);
5,闭运算:imclose(图片,结构);