数字图像处理与分析实验作业(DOC)
数字图像处理实验报告

数字图像处理实验报告1. 引言数字图像处理是使用计算机来处理和优化图像的一种技术。
在本实验中,我们将探索几种常见的数字图像处理方法,并使用Python编程语言和相关库来实现。
2. 实验目的本实验的主要目的是:1.了解图像的基本特性和数字图像处理的基本原理;2.熟悉Python编程语言和相关图像处理库的使用;3.实现常见的图像处理算法并进行实验验证。
3. 实验方法在本实验中,我们使用Python编程语言和以下相关库来实现图像处理算法:•OpenCV:用于图像读取、显示和保存等基本操作;•Numpy:用于图像数据的处理和算术运算;•Matplotlib:用于图像的可视化和结果展示。
以下是实验涉及到的图像处理方法和步骤:1.图像读取和显示:使用OpenCV库读取图像,使用Matplotlib库显示图像;2.图像的灰度化:将彩色图像转换为灰度图像;3.图像的二值化:将灰度图像转换为黑白二值图像;4.图像的平滑处理:使用平滑滤波器对图像进行平滑处理,如均值滤波和高斯滤波;5.图像的边缘检测:使用边缘检测算法对图像进行边缘检测,如Sobel算子和Canny算子;6.图像的直方图均衡化:对灰度图像进行直方图均衡化,增强图像的对比度。
4. 实验过程和结果4.1 图像读取和显示首先,我们使用OpenCV库读取一张图像,并使用Matplotlib库显示该图像:import cv2import matplotlib.pyplot as plt# 读取图像img = cv2.imread('image.jpg')# 显示图像plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.axis('off')plt.show()4.2 图像的灰度化接下来,我们将彩色图像转换为灰度图像:# 灰度化图像gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 显示灰度图像plt.imshow(gray_img, cmap='gray')plt.axis('off')plt.show()4.3 图像的二值化然后,我们将灰度图像转换为黑白二值图像:# 二值化图像_, binary_img = cv2.threshold(gray_img, 128, 255, cv2.THRESH_BINARY)# 显示二值图像plt.imshow(binary_img, cmap='gray')plt.axis('off')plt.show()4.4 图像的平滑处理接下来,我们使用平滑滤波器对图像进行平滑处理,例如使用5x5的均值滤波器和高斯滤波器:# 均值滤波mean_img = cv2.blur(img, (5, 5))# 高斯滤波gaussian_img = cv2.GaussianBlur(img, (5, 5), 0) # 显示平滑处理后的图像plt.figure(figsize=(10, 5))plt.subplot(121)plt.imshow(cv2.cvtColor(mean_img, cv2.COLOR_BGR2R GB))plt.title('Mean Filter')plt.axis('off')plt.subplot(122)plt.imshow(cv2.cvtColor(gaussian_img, cv2.COLOR_B GR2RGB))plt.title('Gaussian Filter')plt.axis('off')plt.show()4.5 图像的边缘检测然后,我们使用边缘检测算法对图像进行边缘检测,例如使用Sobel算子和Canny算子:# 边缘检测sobel_img = cv2.Sobel(gray_img, cv2.CV_8U, 1, 1, ksize=3)canny_img = cv2.Canny(gray_img, 50, 150)# 显示边缘检测结果plt.figure(figsize=(10, 5))plt.subplot(121)plt.imshow(sobel_img, cmap='gray')plt.title('Sobel Operator')plt.axis('off')plt.subplot(122)plt.imshow(canny_img, cmap='gray')plt.title('Canny Operator')plt.axis('off')plt.show()4.6 图像的直方图均衡化最后,我们对灰度图像进行直方图均衡化,以增强图像的对比度:# 直方图均衡化equalized_img = cv2.equalizeHist(gray_img)# 显示直方图均衡化结果plt.imshow(equalized_img, cmap='gray')plt.axis('off')plt.show()5. 实验总结通过本实验,我们熟悉了数字图像处理的基本方法和步骤,并使用Python编程语言和相关库实现了图像的读取、显示、灰度化、二值化、平滑处理、边缘检测和直方图均衡化等操作。
(完整word版)数字图像处理 实验报告(完整版)

数字图像处理实验一 MATLAB数字图像处理初步一、显示图像1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中;2.利用whos 命令提取该读入图像flower.tif的基本信息;3.利用imshow()函数来显示这幅图像;实验结果如下图:源代码:>>I=imread('lily.tif')>> whos I>> imshow(I)二、压缩图像4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。
7.用imread()读入图像Sunset.jpg和Winter.jpg;8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小;9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。
其中9的实验结果如下图:源代码:4~6(接上面两个) >>I=imread('lily.tif')>> imfinfo 'lily.tif';>> imwrite(I,'lily.jpg','quality',20);>> imwrite(I,'lily.bmp');7~9 >>I=imread('Sunset.jpg');>>J=imread('Winter.jpg')>>imfinfo 'Sunset.jpg'>> imfinfo 'Winter.jpg'>>figure(1),imshow('Sunset.jpg')>>figure(2),imshow('Winter.jpg')三、二值化图像10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。
数字图像处理与分析实验作业

数字图像处理与分析实验作业作业说明:作业题目分为基本题和综合应用题。
基本题主要是考察大家对教材涉及的一些基本图像处理技术的理解和实现。
而综合应用题主要是考察大家综合利用图像处理的若干技术来解决实际问题的能力。
注:所有实验用图像均可从网上下载,文档中的图片只是示例。
作业要求:编程工具:Matlab或者VC(可以使用OpenCV:/)。
因为很多基本的图象处理算法已经集成在很多的编程工具中,而编程训练中基本题的目的是让同学们加深对这些算法的理解,所以基本题要求同学们只能使用图像读取和显示相关的函数(例如Matlab的imread imshow,imwrite,OpenCV的cvCreateImage,cvLoadImage,cvShowImage),而不要直接调用相关的API(例如二维DFT,图象均衡等等),但在综合应用题中则无此限制。
上交的作业包括:实验报告和程序。
其中实验报告要求写出算法分析(必要时请附上流程图),函数说明(给出主要函数的接口和参数说明),实验结果(附图)及讨论分析。
提交的程序,一定要确保可以运行,最好能写个程序说明。
基本题一共有10道,可以从中任选2道题来完成。
综合应用题有2道,可以从中任选1道来完成。
请各位同学务必独立完成,切忌抄袭!基本题一、直方图变换要求对原始Lena 图像实现以下三种取整函数的直方图均衡化:线性函数: t k= int[(L -1) t k+ 0.5];对数函数: t k= int[( L-1)log(1+9t k) + 0.5] ;指数函数: t k= int[(L -1)exp( t k-1) + 0.5] ;要求给出:1、原始图像和分别采用上述三种方式均衡化后的图像;2、原始图像的直方图和上述三种方式对应均衡化后的直方图。
二、模板运算2.1 加权平均按照教材图3.3.2 所示的模板对含噪声的Lena_noise 图像进行平滑滤波。
要求给出:1、原始图像和平滑后图像;2、计算平滑后的均方根误差(e rms)和峰值信噪比(PSNR )。
数字图像处理大作业报告

数字图像处理实验报告实验选题:选题二组员:学号:班级:指导老师:实验日期:2019年5月22日一、实验目的及原理1.识别出芯片的引脚2.熟悉并掌握opencv的某些函数的功能和使用方法原理:通过滤波、形态学操作得到二值图,再在二值图中设置条件识别引脚部分。
二、实现方案对图片滤波、调节阈值做边缘检测过滤掉一部分图片中干扰元素;然后通过膨胀、腐蚀操作来减少引脚的空心部分;再通过findContours()函数找到引脚的边缘并得到轮廓的点集,设置特定的长宽比和矩形面积识别引脚部分。
三、实验结果四、源码#include<iostream>#include<cmath>#include"opencv2/highgui/highgui.hpp"#include"opencv2/imgproc/imgproc.hpp"using namespace std;using namespace cv;int main(int argv, char **argc){//载入图片Mat srtImag = imread("2.jpg");Mat G_blur = srtImag.clone();//降噪blur(G_blur, G_blur, Size(5, 5));//imshow("降噪", G_blur);//Canny边缘检测Mat Canny_Imag = G_blur;Canny_Imag = Canny_Imag > 176;Canny(G_blur, Canny_Imag, 300, 50, 3);//imshow("边缘检测", Canny_Imag);//膨胀Mat element = getStructuringElement(MORPH_RECT, Size(10, 10));dilate(Canny_Imag, Canny_Imag, element);//imshow("膨胀", Canny_Imag);//腐蚀Mat element_1 = getStructuringElement(MORPH_RECT, Size(11, 11));erode(Canny_Imag, Canny_Imag, element_1);//imshow("腐蚀", Canny_Imag);//查找轮廓vector<vector<Point>>contours;vector<Vec4i>hierarchy;findContours(Canny_Imag, contours, hierarchy, RETR_CCOMP, CHAIN_APPROX_SIMPLE);vector<vector<Point>> contour_s(contours.size());//该数组共有contours.size()个轮廓的点集vector<Rect> Rec_s(contours.size());//逼近多边形的点集数组//获得每个轮廓点集的逼近多边形的点集for (size_t i = 0; i < contours.size(); i++) {approxPolyDP(Mat(contours[i]), contour_s[i], 3,false);//contour_s存储逼近多边形的点集Rec_s[i]= boundingRect(contour_s[i]); //Rec_s存储最小包围矩形的点集}//筛选合适长宽比的矩形并将其画出来Mat result_Imag = srtImag.clone();for (size_t j = 0; j < contours.size(); j++) {double as_ra;//长宽比as_ra = Rec_s[j].height / Rec_s[j].width;if (as_ra > 3.3 && as_ra < 9.3 && Rec_s[j].area() > 20) { rectangle(result_Imag, Rec_s[j], Scalar(0, 255, 255), 2, 7);}}imshow("result", result_Imag);waitKey(0);return 0;}五、总结经过这次实验,我熟悉了对blur()、Canny()、dilate()、erode()、findContours()、approxPolyDP()等函数的使用,了解了Rect类的构成等。
数字图像处理实验作业

实验一读取一幅图像,完成如下操作,并存储变换后的图像(1)把图像翻转90度,并显示(2)缩小图像为原图像的1/2(3)镜像图像原图像:clc;clf;clear;f=imread('D:\matlab\picture.jpg'); %读取D盘中matlab文件夹中名字为picture的格式为jpg的图片figure,imshow(f)k=imrotate(f,90); %正数表示逆时针旋转,负数表示顺时针旋转figure,imshow(k)imwrite(k,'D:\matlab\k.jpg'); %保存逆时针旋转90度后的图像逆时针旋转90度后图像:x=0.5; %横向放2倍。
如果想缩2倍就把x改为0.5即可,即变为0.5倍y=0.5; %纵向放2倍。
如果想缩2倍就把y改为0.5即可,即变为0.5倍T1 = maketform('affine',[x 0 0; 0 1 0; 0 0 1]);T2 = maketform('affine',[1 0 0; 0 y 0; 0 0 1]);I1 = imtransform(k,T1);I2 = imtransform(I1,T2);figure, imshow(I2)imwrite(I2,'D:\matlab\I2.jpg'); %保存缩小为原来1/2的图像缩小图像为原图像的1/2img=rgb2gray(I2) %取图像I2的灰度图像subplot(1,2,1),imshow(img); %水平镜像[m,n]=size(img);p=1:m;q=1:n;z(p,n-q+1)=img(p,q);subplot(1,2,2),imshow(z);imwrite(z,'D:\matlab\z.jpg'); %保存镜像后的图像镜像后的图像:实验二读取一幅彩色图像,并将图像转化为二值图像,在一张图表上,显示原始图像,灰度图像,二值图像。
图像处理和分析-王伟强-作业题和答案解析汇总-2017版

【作业1】1、完成课本习题3.2(a)(b), 课本中文版《处理》第二版的113页。
可以通过matlab帮助你分析理解。
a:s=T(r)=11+(mr)Eb:E控制函数的斜坡,也就是函数的倾斜程度,E越大,函数倾斜程度越大,如下图1,图2所示:图1:E=5图2:E=202、一幅8灰度级图像具有如下所示的直方图,求直方图均衡后的灰度级和对应概率,并画出均衡后的直方图的示意图。
(计算中采用向上取整方法,图中的8个不同灰度级对应的归一化直方图为[0.17 0.25 0.21 0.16 0.07 0.08 0.04 0.02])【解答】直方图均衡采用公式S−1⌉S S=⌈S∑S S(S)S=0式中,G为灰度级数,取8,p r(w)为灰度级w的概率,S r为变换后的灰度,计算过程如下表所示:则新灰度级的概率分别是:P s(0) = 0P s(1) = P r(0) = 0.17P s(2) = 0P s(3) = P r(1) = 0.25P s(4) = 0P s(5) = P r(2) = 0.21P s(6) = P r(3) + P r(4) = 0.23P s(7) = P r(5) = P r(6) = P r(7) = 0.14编写matlab程序并绘制直方图:s=0:1:7;p=[0 0.17 0 0.25 0 0.21 0.23 0.14];bar(s,p);axis([-1 8 0 0.3]);可以看出,此图较题目原图更加“均匀”。
【作业2】1、完成课本数字图像处理第二版114页,习题3.10。
【解答】由图可知S S(S)=−2S+2,(0≤S≤1)S S (S )=2S ,(0≤S ≤1)将两图做直方图均衡变换S 1=S 1(S )=∫S S (S )SS S=∫(−2S +2)SS S=−S 2+2SS 2=S 2(S )=∫S S (S )SS S=∫(2S )SS S=S 2令上面两式相等,则S 2=−S 2+2S因为灰度级非负,所以S =√−S 2+2S2、请计算如下两个向量与矩阵的卷积计算结果。
《数字图像处理》实验报告

《数字图像处理》实验报告数字图像处理是一门将图像进行数字化处理的学科,它通过计算机算法和技术手段对图像进行分析、增强、压缩和重建等操作。
在本次实验中,我们学习了数字图像处理的基本概念和常用算法,并通过实验来探索其应用和效果。
首先,我们进行了图像的读取和显示实验。
通过使用Python中的OpenCV库,我们能够轻松地读取图像文件,并将其显示在屏幕上。
这为我们后续的实验奠定了基础。
同时,我们还学习了图像的像素表示方法,了解了图像由像素点组成的原理。
这使我们能够更好地理解后续实验中的算法和操作。
接下来,我们进行了图像的灰度化实验。
灰度化是将彩色图像转换为灰度图像的过程。
在实验中,我们使用了不同的算法来实现灰度化操作,包括平均值法、最大值法和加权平均法等。
通过比较不同算法得到的灰度图像,我们发现不同算法对图像的处理效果有所差异,这使我们深入理解了灰度化的原理和应用。
随后,我们进行了图像的直方图均衡化实验。
直方图均衡化是一种用于增强图像对比度的方法。
在实验中,我们使用了直方图均衡化算法来对图像进行处理,并观察了处理前后的效果变化。
通过实验,我们发现直方图均衡化能够显著提高图像的对比度,使图像更加清晰和鲜明。
在进一步探索图像处理技术的过程中,我们进行了图像的滤波实验。
滤波是一种常用的图像处理操作,它通过对图像进行卷积操作来实现。
在实验中,我们学习了不同类型的滤波器,包括均值滤波器、高斯滤波器和中值滤波器等。
通过比较不同滤波器对图像的处理效果,我们发现每种滤波器都有其适用的场景和效果。
此外,我们还进行了图像的边缘检测实验。
边缘检测是一种用于提取图像边缘信息的方法。
在实验中,我们学习了不同的边缘检测算法,包括Sobel算子、Canny算子和Laplacian算子等。
通过比较不同算法对图像的处理效果,我们发现每种算法都有其独特的特点和应用。
最后,我们进行了图像的压缩实验。
图像压缩是一种将图像数据进行压缩以减小文件大小的方法。
(完整word版)数字图像处理实验报告6

(完整word版)数字图像处理实验报告6数字图像处理与分析实验报告学院:班级:姓名:学号:实验六细胞图像的分割与测量一、实验目的1. 通过分析细胞图像特点,完成细胞图像的分割和测量,并分析测量结果。
2. 将图像预处理、分割、分析等关键技术结合起来,理论与实践相结合,提高图像处理关键技术的综合应用能力。
二、实验要求1. 对比中值、均值和形态学开闭运算对细胞图像的滤波效果,选择适用于细胞图像的滤波方法2. 运用大津阈值对细胞图像分割,观察分割后噪声情况,观察目标边缘处的分割效果;(使用函数:im2bw)3. 实现连通区域的编号;(使用函数:bwlabel)4. 计算各连通区域的相关信息,如面积、重心等。
(使用函数:regionprops )三、实验步骤1、预处理去噪x=imread('C:\Documents and Settings\Administrator\桌面\CHEN2-7.BMP');y=medfilt2(rgb2gray(h));subplot(2,2,1)imshow(x)title('原图像');subplot(2,2,2)imshow(y)title('中值滤波处理');I=fspecial('average')z=imfilter(rgb2gray(x),I);subplot(2,3,4)imshow(z)title('均值滤波处理');se = strel('ball',5,5);m = imopen(rgb2gray(x),se);subplot(2,3,5)imshow(m)title('形态学开运算处理');se = strel('ball',5,5);n = imclose(rgb2gray(x),se);subplot(2,3,6)imshow(n)title('形态学闭运算处理');2、大津阈值分割先做出灰度图像的直方图,根据直方图选取合适的分割灰度值x=imread('C:\Documents and Settings\Administrator\桌面\CHEN2-7.BMP');b=rgb2gray(x);imhist(b);title('灰度直方图');由上图可知,选择阈值在185/255附近可以达到最好的分割效果,则有:x=imread('C:\Documents and Settings\Administrator\桌面\CHEN2-7.BMP'); b=rgb2gray(x);y1=medfilt2(b);w1=im2bw(y1,185/255);h=fspecial('average') ;y2=imfilter(b,h);w2=im2bw(y2, 185/255);se=strel('line',11,90);y3=imopen(b,se);w3=im2bw(y3, 185/255);y4=imclose(b,se);w4=im2bw(y4, 185/255);figuresubplot(2,2,1)imshow(w1)title('中值大津阈值分割');subplot(2,2,2)imshow(w2)title('均值大津阈值分割');subplot(2,2,3)imshow(w3);title('开运算大津阈值分割');subplot(2,2,4)imshow(w4);title('闭运算大津阈值分割');3、目标编号标记x=imread('C:\Documents and Settings\Administrator\桌面\CHEN2-7.BMP'); b=rgb2gray(x);se=strel('ball',5,5);y4=imclose(b,se);w4=im2bw(y4, 185/255);z=imcomplement(w4);subplot(2,2,1)imshow(z);title('取反后图像')z=bwareaopen(z,200);subplot(2,2,2);imshow(z);title('去除像素点小于200的部分')BW = logical(z);L = bwlabel(BW,4);subplot(2,2,3);imshow(L);title('四连通')M=bwlabel(BW,8);Subplot(2,2,4)imshow(M);title('八连通')4、测量各个细胞的面积等参数x=imread('C:\Documents and Settings\Administrator\桌面\CHEN2-7.BMP'); b=rgb2gray(x);se = strel('ball',5,5);I0=imclose(b,se);I11=im2bw(I0,185/256);I12=imcomplement(I11);I13= bwlabel(I12);s = regionprops(I13, 'centroid');centroids = cat(1, s.Centroid);figure(1);imshow(I13)title('重心标记图');hold onplot(centroids(:,1), centroids(:,2), 'r*')hold offm=regionprops(I13,'Area');areas=cat(1, m.Area);figure(3);plot(areas)如图为重心标记和各区域面积分布图:1.为何需要预处理?直接分割的效果如何?答:如果不进行预处理,在后续处理时如进行阈值分割会产生边缘毛刺,使效果不明显;2.选择何种预处理方法?a) 中值适合于去除脉冲噪声和图像扫描噪声,同时不会使图像变模糊,但对消除细节较多的图像不适合用中值滤波;b) 均值可以有效的是噪声得到消除,但同时图像变得模糊,丢失了一些图像的细节部分;c) 形态学开运算对于消除背景噪声有很好的效果,尤其是一些胡椒噪声;d) 形态学闭运算对消除前景噪声效果较好,如:沙眼噪声;通过以上分析及结合图像处理效果可以得出,利用形态学开闭运算对滤除图像中的沙眼噪声和胡椒噪声效果较好;3.分析预处理的目的,有针对性的选择合适的方法答:预处理的目的是为了事先消除图像的噪声,好为后处理做准备;四、思考题1.若将预处理去噪的步骤省掉,则如何在目标编号的过程中加入滤波处理;答:若预处理中没有去噪步骤,从图像处理结果可以看出,经过阈值分割后,图像中还有很多椒盐噪声,要在编号中滤除这些噪声,可通过形态学开运算后,再进行取反操作等后续操作;2.将去噪过程与阈值分割前后调换,选择哪种滤波方法可以滤除二值图像上的噪声;答:通过阈值分割之后,图像中有很多胡椒噪声,可通过形态学开操作将其去除;3.总结大津阈值在细胞图像分割中存在的问题,想一想你所学的算法中哪种算法更适合于细胞图像的分割。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理与分析实验作业作业说明:作业题目分为基本题和综合应用题。
基本题主要是考察大家对教材涉及的一些基本图像处理技术的理解和实现。
而综合应用题主要是考察大家综合利用图像处理的若干技术来解决实际问题的能力。
注:所有实验用图像均可从网上下载,文档中的图片只是示例。
作业要求:编程工具:Matlab或者VC(可以使用OpenCV:/)。
因为很多基本的图象处理算法已经集成在很多的编程工具中,而编程训练中基本题的目的是让同学们加深对这些算法的理解,所以基本题要求同学们只能使用图像读取和显示相关的函数(例如Matlab的imread imshow,imwrite,OpenCV的cvCreateImage,cvLoadImage,cvShowImage),而不要直接调用相关的API(例如二维DFT,图象均衡等等),但在综合应用题中则无此限制。
上交的作业包括:实验报告和程序。
其中实验报告要求写出算法分析(必要时请附上流程图),函数说明(给出主要函数的接口和参数说明),实验结果(附图)及讨论分析。
提交的程序,一定要确保可以运行,最好能写个程序说明。
基本题一共有10道,可以从中任选2道题来完成。
综合应用题有2道,可以从中任选1道来完成。
请各位同学务必独立完成,切忌抄袭!基本题一、直方图变换要求对原始Lena 图像实现以下三种取整函数的直方图均衡化:线性函数: t k= int[(L -1) t k+ 0.5];对数函数: t k= int[( L-1)log(1+9t k) + 0.5] ;指数函数: t k= int[(L -1)exp( t k-1) + 0.5] ;要求给出:1、原始图像和分别采用上述三种方式均衡化后的图像;2、原始图像的直方图和上述三种方式对应均衡化后的直方图。
二、模板运算2.1 加权平均按照教材图3.3.2 所示的模板对含噪声的Lena_noise 图像进行平滑滤波。
要求给出:1、原始图像和平滑后图像;2、计算平滑后的均方根误差(e rms)和峰值信噪比(PSNR )。
2.2 拉普拉斯算子按照图3.3.3 所示的两个模板对原始Lena 图像进行锐化滤波。
要求给出:1、原始图像和锐化后图像;2、比较两种模板的锐化效果。
三、频域增强要求实现对Lena 图像用理想低通滤波器、巴特沃斯低通滤波器、理想高通滤波器、巴特沃斯高通滤波器进行频域增强,滤波器的参数自定。
要求给出:1、原始图像和上述各个滤波后图像;2、给出各个滤波器的参数设置,并说明参数如何影响滤波效果。
四、图像消噪4.1 添加噪声要求实现对Lena 图像添加高斯噪声和椒盐噪声,参数自定;4.2 消除噪声对上述含有高斯噪声和椒盐噪声的两幅图像分别采用均值滤波和中值滤波进行消噪处理。
要求给出:1、给出添加高斯和椒盐噪声后的图像,并说明所加噪声的相关参数;2、给出原始图像和对于两种噪声图像分别采用两种方法消噪后的图像;3、计算消噪后的均方根误差(e rms)和峰值信噪比(PSNR )。
五、仿射变换5.1 仿射变换要求实现对Lena 图像的仿射变换,包括平移,放缩和旋转(各一次变换),参数自定,但是应能较明显看出变换效果,且需要在文档中说明。
5.2 灰度插值对于放缩和旋转变换需对变换后图像分别采用最近邻插值和双线性插值。
要求给出:1、给出原始图像和平移后的图像;2、对于放缩和旋转变换,分别给出最近邻插值和双线性插值后的图像,并对这两种插值方法进行对比说明。
六、位平面分解6.1 二值分解要求实现对Lena 图像的二值分解6.2 灰度码分解要求实现对Lena 图像的灰度码分解要求给出:1、分别给出二值分解和灰度码分解后的8个位面图;2、在报告中分析说明这两种插值方法的区别。
七、图像变换7.1 离散余弦变换要求实现对Lena 图像的离散余弦变换7.2 小波变换要求实现对Lena 图像的3 级小波变换要求给出:1、给出离散余弦变换的结果,并通过结果分析说明该变换的特点;2、给出3 级小波变换的结果,并通过结果分析说明该变换的特点。
八、图像水印8.1 要求实现基于迭代混合的图像隐藏,以Girl 为载体图像,Couple 为隐藏图像。
实现混合参数α为0.7 的迭代混合,并计算此时恢复图像的均方根误差。
8.2 要求对混合参数α以0.1 为间隔,计算并绘制混合图像及恢复图像的均方根误差与混合参数的关系、最佳混合隐藏的曲线(与教材271 页的曲线图类似)。
要求给出:1、给出迭代混合的结果,,并计算此时恢复图像的均方根误差;2、给出混合图像及恢复图像的均方根误差与混合参数的关系图、最佳混合隐藏的曲线图。
九、彩色图像处理9.1彩色模型将原始彩色Lena_color图像从RGB空间转换到HSI空间9.2彩色处理对上述得到的HSI图像,分别进行亮度增强、饱和度增强和色调增强9.3彩色图像去噪对含有噪声的彩色Lena_color_noise图像进行消噪处理,消噪方法可以自己选定,但要在实验报告中说明。
要求给出:1、原始图像和对应的H、S和I各分量图像;2、分别给出三个分量增强后的彩色图像;3、给出含有噪声的原始图像和去噪后的图像,并说明所用的去噪方法。
十、多尺度图像处理10.1高斯金字塔利用(14.2.5)公式所示的双线性滤波器组成的5×5的高斯平滑模板对Lena图像进行3层高斯金字塔分解。
10.2拉普拉斯金字塔对于扩展操作,仍采用上述5×5的高斯模板进行插值,给出3层拉普拉斯金字塔。
要求给出:1、0到3层的高斯金字塔图像;2、0到3层的拉普拉斯金字塔图像。
综合应用题一、图像修复图像修复问题是一个实用性很强的问题,在实际生活中有着重要的应用。
比如照片划痕或者图像中标记文字的去除等问题,都可以通过图像修复技术很好地解决。
图像修复是指对图像中某些指定的损坏区域(可以是在图像采集和处理的过程中退化或丢失的区域,也可以是人为指定的待去除的物体)进行复原,并使得修复后的图像具有很好的真实感。
与基于偏微分方程的扩散方法相比,基于样本的修复方法在保持纹理方面取得更好的表现,更适合于修复大面积的目标区域。
图像修复示意图如下所示:其中Φ表示源区域,Ω表示目标区域(待修复区域),δΩ表示边界线,p表示边界线的一个点,ψp 表示以p 点为中心的图像块,n p表示p 点单位法向量,⊥表示等照度线(这里采用与梯度最大方向垂直的方向来代替)。
∇ I p图像修复的过程主要可以分为两步:确定修复顺序(就是计算目标区域与源区域之间边界点的待修复权值)和更新图像信息(也就是更新待修复图像块中处于目标区域的像素值)。
前者可以采用文献[1]中的公式来计算边界点权值:P( p) C( p) D( p),其中第一项C( p)表示当前图像块中完好像素点所占的比例,第二项D( p)是等照度线(灰度值相等的线)与单位法相向量的内积。
C( p)和D( p)的计算方法和细节可以到文献[1]中查阅;也可以直接采用第一项C( p)作为权值,但是这样不能保持原始图像的纹理信息,修复效果不好。
在确定修复顺序之后,我们可以采用源区域中与当前待修复图像块最接近的图像块来更新目标区域的像素值。
图像修复的一般流程如下所示:输入: 待修复的图像循环:一直到目标区域Ω 被完全填充。
首先计算所有目标区域边界δΩ 像素点的优先权,把优先权最大点作为当前图像块的中心。
将此图像块重排为不完整信号。
其次利用不完整信号中的完好像素点选择与之最接近的图像块,再利用所选择的图像块来恢复该信号中不完整像素点。
最后更新边界像素点的信息。
输出: 修复后的图像为了降低实现难度,这里对图像修复问题进行简化,并给出以下几点提示:1、目标区域以红色标注,即(R,G,B)=(255,0,0),并只出现在图像的中间区域(离边界距离大于7 像素),可以将目标区域所有点的横纵坐标存到目标点数组中。
如果该数组长度为0,则认为修复完毕。
2、对上述目标点数组中的像素,如果其3×3 的8 邻域中含有源区域中的点,则认为该像素点是边界点。
3、按照模板大小为7×7,间隔3 像素的重叠采样的方法将源区域保存到数组中。
这里可以将上述7×7 的图像块以列优先的方式重排为列信号,这样对整个源区域采样得到的源区域数组即为147×N 的形式,其中147 表示7×7×3(即1-49 表示R 分量的值,50-98 表示G 分量的值,99-147表示B 分量的值),N 表示对源区域采样得到的图像块数。
4、每次循环从边界点中选出权值最大的一个作为当前待修复图像块的中心,利用该图像块中完好的像素点与源区域数组中各个图像块的对应点作比较,选出最接近的来进行修复。
5、每次循环会对7×7 大小的图像块进行修复,因此每次循环都会改变边界点信息,此时不需要重新对整个图像进行搜索来更新目标点数组,只需将原数组中在本次循环中被修复的目标点去掉,再对该数组进行检查更新边界点。
6、注意:在本次实验中,所有待修复的图像均为彩色图像。
要求实现:1、基本部分:利用C( p)作为边界点权值,对给出的2 幅图像进行修复;2、提高部分:利用P( p) C( p) D( p)作为边界点权值,对给出的2 幅图像进行修复;3、在实验报告中给出修复结果,并将修复后图像另存为文件一起上交。
我会利用大家的程序对另外的测试图像进行验证,所以一定要确保提交的程序具有自动完成图像修复的功能。
4、只需完成基本部分即可,有余力的同学可以完成提高部分。
参考文献:1、Criminisi A, P erez P, and Toyama K, “Object removal by examplar-based image inpainting”, in Proc. Int. Conf. Comp. Vision, pp. 721–728, 2003.二、人脸特征点检测人脸特征点的自动检测是一项十分重要且用途非常广泛的工作,是实现无监督式的人脸识别,表情识别,3D人脸重建和人脸动画等方面的基础。
人脸特征点的检测包括眼睛,瞳孔,眼角,鼻孔,鼻尖,嘴唇,嘴角等,要实现在不同光照和不同人脸表情下的自动特征点检测不是一件容易的事情。
许多研究者都对此进行了深入的研究。
这里要实现的人脸特征点自动检测工作包括:人脸定位、眼睛定位、瞳孔检测、眼角检测、鼻子定位、鼻孔检测、嘴巴定位和嘴角检测。
检测结果的示意图(文献[1])如下所示:特征点检测的大致流程如下:上述每一步骤在文献[1]中都有详细说明,这里建议大家使用OpenCV(关于OpenCV 的安装和使用,可以在首页给出的连接里面找到),并给出几点提示:1、人脸定位:在文献[1]中是使用Viola and Jones’face detection algorithm 来进行人脸检测(这可以使用OpenCV自带的cvHaarDetectObjects函数,调用haarcascade_frontalface_alt2.xml分类器进行检测,这些分类器文件存放在安装目录下如OpenCV2.2\data\haarcascades里面);2、眼睛定位:对估计区域使用OpenCV自带的cvHaarDetectObjects函数,调用haarcascade_eye_tree_eyeglasses.xml分类器进行检测;3、眼角检测:在文献[1]中是对估计区域ROI使用Shi-Tomasi’s Good Features方法对灰度图检测角点,再从中选出两个端点作为眼角(这里可以使用OpenCV 自带的cvGoodFeaturesToTrack函数检测角点);4、鼻孔检测:根据人脸器官分布的几何特征,估计鼻子的矩形区域,利用简单阈值对其灰度图进行分割,再进行形态学腐蚀(cvErode函数)得到;5、嘴角检测:与眼角检测类似,可以使用cvGoodFeaturesToTrack函数检测角点。