考试复习1题型:选择题(10分),判断题(10分)填空题(20分)程序解释题(15分)简答题(25分)综合题(20分)2考试范围:以上课PPT为主导,以及我们做的7次实验的内容,理解实验程序。(1)直方图含义,灰度图,索引图和二值图的含义。答:灰度直方图是灰度级的函数,是对图像中灰度级分布的统计,反映的是一幅图像中各灰度级像素出现的频率。横坐标表示灰度级,纵坐标表示图像中对应某灰度级所出现的像素个数,也可以是某一灰度值的像素数占全图像素数的百分比,即灰度级的频率。灰度直方图只能反映图像的灰度分布,而不能反映图像像素的位置,即丢失了像素的位置信息。一幅图像对应唯一的灰度直方图,反之不成立。不同的图像可对应相同的直方图。一幅图像分成多个区域,多个区域的直方图之和即为原图像的直方图。灰度直方图求双峰或多峰选择两峰之间的谷底作为阈值。存储灰度图像只需要一个数据矩阵,数据类型可以是double也可以是uint8。一幅灰度图像是一个数据矩阵I,其中数据均代表了在一定范围内的颜色灰度值。Matlab把灰度图像用数据矩阵的形式进行存储,每个元素则表示了图像中的每个像素。矩阵元素可以是doudle、uint8整数类型。索引图像是把像素值作为RGB调色板下标的图像。索引色图像包含2个结构,一个是调色板map;另一个是图像数据矩阵X。调色板是一个有3列和若干行的色彩映像矩阵,矩阵每行代表一种色彩,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定颜色。图像数据是uint8或是双精度的。索引图像包括数据矩阵X和颜色映像矩阵map。其中map是一个p×3的数据矩阵,其每个元素的值均为[0,1]之间双精度浮点型数据。map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。而数据矩阵X可以是double和uint8型的。真彩色图像用R、G、B3个分量表示1个像素的颜色,数据结构是一个m×n×3的多维数组。如果读取图像中(100,50)处像素值,可以查看三元组(100,50,1:3)。与灰度图像相同,二值图像只需一个数据矩阵,每个像素只有2个灰度值。可以采用uint8或double类型存储,工具箱中以二值图像作为返回结果的函数都使用uint8类型。二值图像是一个逻辑类,包括0和1两个数值,像素0显示为黑色,像素1显示为白色。通过NOT(~)命令可对二进制图像取反,数值0显示为白色,1显示为黑色。(2)边缘检测的边缘跟踪原理基于边缘检测的图像分割方法的基本思路是先确定图像中的边缘像素,然后就可把它们连接在一起构成所需的边界。图像边缘意味着图像中一个区域的终结和另一个区域的开始,图像中相邻区域之间的像素集合构成了图像的边缘。进一步讲,图像的边缘是指图像灰度发生空间突变的像素的集合。ROBERTS算子、SOBEL算子、CANNY算子、PREWITT算子。从图像中一个边缘点出发,然后根据某种判别准则搜索下一个边缘点以此跟踪出目标边界。确定边界的起始搜索点,起始点的选择很关键,对某些图像,选择不同的起始点会导致不同的结果。确定合适边界判别准则和搜索准则,判别准则用于判断一个点是不是边界点,搜索准则则指导如何搜索下一个边缘点。确定搜索的终止条件。(轮廓跟踪法,光栅跟踪法)BW=imread('blobs.png');%读取图像[B,L,N,A]=bwboundaries(BW);%返回边界、标签矩阵、目标数、邻接矩阵imshow(BW);holdon;%显示图像fork=1:length(B),if(~sum(A(k,:)))boundary=B{k};plot(boundary(:,2),boundary(:,1),'r','LineWidth',2);%显示目标边界forl=find(A(:,k))'boundary=B{l};plot(boundary(:,2),boundary(:,1),'g','LineWidth',2);%显示内部边界endendend(3)形态学运算中的四种运算的含义,区别腐蚀:由所有可以填入A内部的结构元素的原点组成。将图像平移-b(b属于结构元素),并计算所有平移的交集而得到。膨胀:结构元素的反射与图像的交集至少有一个像素开运算:轮廓被平滑,细长的部分被去除,小的孤岛被去除。细长的突出被去除,目标像素变成背景(先腐蚀后膨胀)闭运算:狭窄的间断被填充,背景像素变成目标。闭运算是开运算的对偶运算(先膨胀后腐蚀)(4)区域生长的实现思路将一个图像中的一点作为种子,此种子会8邻域/4邻域进行扩展,扩展一定限制(即差值不能过大,当然你可以引入梯度这个概念,甚至二维偏导数……),求出种子生长的最终结果。开始时确定一个或多个象素点作为种子,然后按某种相似性准则增长区域,逐步生成具有某种均匀性的空间区域,将相邻的具有相似性质的象素或区域归并从而逐步增长区域,直至没有可以归并的点或其它小区域为止。区域内象素的相似性度量可以包括平均灰度值、纹理、颜色等信息。(5)腐蚀中结构元素原点的作用结构元素是在特定研究目的下用来探测图像的一个小的集合或者子图像。由所有可以填入A内部的结构元素的原点组成。当原点不在集合中心时,腐蚀结果的形状不变,但是位置会发生偏移。原点在结构元素内部时,腐蚀结果也在原始图像内部。原点在结构元素外部时,腐蚀结果偏离了原始图像的位置。凹陷的角在腐蚀后具有结构元素的形状。原始图像凸出的角在腐蚀后保持不变。(6)OTSU算法的实现原理及思路(7)熟悉试验内容中蓝色检测的程序思路closeall;clearall;clc;%读入一张图片data=imread('蓝玫瑰.jpg');%原图像与灰度图像进行相减diff_im=imsubtract(data(:,:,3),rgb2gray(data));figure,imshow(data(:,:,3));figure,imshow(diff_im);%medfilt2函数用于执行二维中值滤波diff_im=medfilt2(diff_im,[33]);diff_im=im2bw(diff_im,0.05);%bwareaopen(BW,P,conn),删除二值图像BW中面积小于P的对象,默认情况下conn使用8邻域diff_im=bwareaopen(diff_im,2000);%腐蚀膨胀函数,对连通对象进行标注,bwlabel主要对二维二值图像中各个分离部分进行标注bw=bwlabel(diff_im,8);%统计被标记的区域的面积分布,显示区域总数stats=regionprops(bw,'BoundingBox','Centroid');%BoundingBox为矩形框,Centroid为质心figure,imshow(data)holdonforobject=1:length(stats)bb=stats(object).BoundingBox;bc=stats(object).Centroid;%求矩形框的重心rectangle('Position',bb,'EdgeColor','r','LineWidth',2)plot(bc(1),bc(2),'-m+')a=text(bc(1)+15,bc(2),strcat('X:',num2str(round(bc(1))),'Y:',num2str(round(bc(2)))));set(a,'FontName','Arial','FontWeight','bold','FontSize',12,'Color','yellow');h(object)=round(bc(1));z(object)=round(bc(2));endholdoff(8)车牌识别的算法过程灰度化rgb2gray、灰度变换imadjust、图像去噪medfilt2、边缘检测edge/imerode/imclose/bwareaopen/、形态学处理clearall;closeall;I=imread('车牌5.jpg');figure(1);subplot(211);imshow(I);title('原始图像');I_gray=rgb2gray(I);subplot(212);imshow(I_gray);title('灰度图像');I_med=medfilt2(I_gray,[3,3]);imshow(I_med);title('中值滤波后的图像');I_imad=imadjust(I_med);imshow(I_imad);title('灰度变换后的图像');I_edge=edge(I_imad,'canny');imshow(I_edge),title('边缘检测后盾额图像');se=[1;1;1];I_erode=imerode(I_edge,se);se=strel('rectangle',[25,25]);I_close=imclose(I_erode,se);I_final=bwareaopen(I_close,2000);imshow(I_final);title('形态滤波后图像');%腐蚀、闭运算[y,x,z]=size(I_final);I6=double(I_final);Y1=zeros(y,1);fori=1:yforj=1:xif(I6(i,j,1)==1)Y1(i,1)=Y1(i,1)+1;endendend[tempMaxY]=max(Y1);PY1=MaxY;while((Y1(PY1,1)=50)&&(PY11))PY1=PY1-1;endPY2=MaxY;while((Y1(PY2,1)=50)&&(PY2y))PY2=PY2+1;endX1=zeros(1,x);forj=1:xfori=PY1:PY2if(I6(i,j,1)==1)X1(1,j)=X1(1,j)+1;endendendPX1=1;while((X1(1,PX1)3)&&(PX1x))PX1=PX1+1;endPX2=x;while((X1(1,PX2)3)&&(PX2PX1))PX2=PX2-1;endPX1=PX1-1;PX2=PX2+1;PY1=PY1+10/220*(PY2-PY1);PX1=PX1+15/440*(PX2-PX1);PX2=PX2-15/440*(PX2-PX1);dw=I(PY1:PY2,PX1:PX2,:);figure;imshow(dw);bw=im2bw(dw);b=bwareaopen(bw,10);I_final=bwmorph(bw,'thin');figure,imshow(I_final);(9)理解试验6的圆检测和直线检测的程序,包括主要用到的hough检测的几个函数。Hough变换可以用于将边缘像素连接起来得到边界曲线[H,theta,rho]=hough(BW)[H,theta,rho]=hough(BW,PARAM1,VAL1,PARAM2,VAL2)其中BW是测试图像,PARAM1、VAL1、PARAM2和VAL2可以设置具体的参数和取值,clc;clear;closealltic[namepath]=uigetfile({'*.jpg','JEPGFile';'*.bmp','bitFile';'*.tif','ALLImageFiles'},'openimagefile');img=imread([pathname]);figure,subplot(221),imshow(img);title('原图');gray=rgb2gray(img);level=graythresh(gray);bw=im2bw(gray,level);nhood=true(9);bw1=imclose(bw,nhood);bw2=imopen(bw1,nhood);BW1=~bw2;BW=edge(BW1,'canny');%使用canny方法检测目标边界subplot(222),imshow(BW);%显示边界的二值图像[H,theta,rho]=hough(BW);%hough变