数字图像处理与分析实验作业(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版)数字图像处理 实验报告(完整版)

(完整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版

图像处理和分析-王伟强-作业题和答案解析汇总-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

(完整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.总结大津阈值在细胞图像分割中存在的问题,想一想你所学的算法中哪种算法更适合于细胞图像的分割。

数字图像处理大作业(DOC)

数字图像处理大作业(DOC)

大作业指导书题目:数字图像处理院(系):物联网工程学院专业: 计算机班级:计算机1401-1406指导老师:学号:姓名:设计时间: 2016-2017学年 1学期摘要 (3)一、简介 (3)二、斑点数据模型.参数估计与解释 (4)三、水平集框架 (5)1.能量泛函映射 (5)2.水平集传播模型 (6)3.随机评估方法 (7)四、实验结果 (8)五、总结 (11)基于水平集方法和G0模型的SAR图像分割Abstract(摘要)这篇文章提出了一种分割SAR图像的方法,探索利用SAR数据中的统计特性将图像分区域。

我们假设为SAR图像分割分配参数,并与水平集模型相结合。

分布属于G分布中的一种,处于数据建模的目的,它们已经成功的被用于振幅SAR图像中不同区域的建模。

这种统计数据模型是驱动能量泛函执行区域映射的基础,被引用到水平集传播数值方案中,将SAR 图像分为均匀、异构和极其异构区域。

此外,我们引入了一个基于随机距离和模型的评估过程,用于量化我们方法的鲁棒性和准确性。

实验结果表明,我们的算法对合成和真实SAR 数据都具有准确性。

+简介1、Induction(简介)合成孔径雷达系统是一种成像装置,采用相干照明比如激光和超声波,并会受到斑点噪声的影响。

在SAR图像处理过程中,返回的是斑点噪声和雷达切面建模在一起的结果。

这个积性模型(文献[1])因包含大量的真实SAR数据,并且在获取过程中斑点噪声被建模为固有的一部分而被广泛应用。

因此,SAR图像应用区域边界和目标检测变得更加困难,可能需要斑点去除。

因此,斑点去除是必需的,有效的方法可以在文献[2][3][4][5][6][7][8][9][10]中找到。

对于SAR图像分割,水平集方法构成一类基于哈密顿-雅克比公式的重要算法。

水平集方法允许有效的分割标准公式,从文献[12]中讨论的传播函数项可以得到。

经典方法有着昂贵的计算成本,但现在的水平集的实现配置了有趣的低成本的替换。

数字图像处理实验报告(五个实验全)

数字图像处理实验报告(五个实验全)

数字图像处理实验报告(五个实验全)实验⼀ Matlab图像⼯具的使⽤1、读图I=imread('lena.jpg');imshow(I);2、读⼊⼀幅RGB图像,变换为灰度图像和⼆值图像,并在同⼀个窗⼝内分成三个⼦窗⼝来分别显⽰RGB图像和灰度图像。

a=imread('lena.jpg')i = rgb2gray(a)I = im2bw(a,0.5)subplot(3,1,1);imshow(a);subplot(3,1,2);imshow(i);subplot(3,1,3);imshow(I);原图像灰度图像⼆值图像实验⼆图像变换1、对⼀幅图像进⾏平移,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与平移后傅⾥叶频谱的对应关系。

s=imread('beauty.jpg');i=rgb2gray(s)i=double(i)j=fft2(i);k=fftshift(j); 原图像原图的傅⾥叶频谱l=log(abs(k));m=fftshift(j);RR=real(m);II=imag(m);A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=circshift(s,[800 450]);b=rgb2gray(b)b=double(b) 平移后的图像平移后的傅⾥叶频谱c=fft2(b);e=fftshift(c);l=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);subplot(2,2,2);imshow(uint8(b));subplot(2,2,3);imshow(A);subplot(2,2,4);imshow(B);2、对⼀幅图像进⾏旋转,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与旋转后傅⾥叶频谱的对应关系。

数字图像处理实验报告.doc

数字图像处理实验报告.doc

数字图像处理实验报告数字图像处理实验报告1一.实验内容:主要是图像的几何变换的编程实现,具体包括图像的读取、改写,图像平移,图像的镜像,图像的转置,比例缩放,旋转变换等.具体要求如下:1. 编程实现图像平移,要求平移后的图像大小不变;2. 编程实现图像的镜像;3. 编程实现图像的转置;4. 编程实现图像的比例缩放,要求分别用双线性插值和最近邻插值两种方法来实现,并比较两种方法的缩放效果;5. 编程实现以任意角度对图像进行旋转变换,要求分别用双线性插值和最近邻插值两种方法来实现,并比较两种方法的旋转效果.二.实验目的和意义:本实验的目的是使学生熟悉并掌握图像处理编程环境,掌握图像平移、镜像、转置和旋转等几何变换的方法,并能通过程序设计实现图像文件的读、写操作,及图像平移、镜像、转置和旋转等几何变换的程序实现.三.实验原理与主要框架3.1实验所用编程环境Visual C++(简称VC)是微软公司提供的基于C/C++的应用程序集成开发工具.VC拥有丰富的功能和大量的扩展库,使用它能有效的创建高性能的Windows应用程序和Wet应用程序.VC除了提供高效的C/C++编译器外,还提供了大量的可重用类和组件,包括著名的微软基础类库(MFC)和活动模板类库(ATL),因此它是软件开发人员不可多得的开发工具.VC丰富的功能和大量的扩展库,类的重用特性以及它对函数库、DLL库的支持能使程序更好的模块化,并且通过向导程序大大简化了库资源的使用和应用程序的开发,正由于VC具有明显的优势,因而我选择了它来作为数字图像几何变换的开发工具.在本程序的开发过程中,VC的核心知识、消息映射机制、对话框控件编程等都得到了生动的体现和灵活的应用.3.2实验处理的对象:256色的BMP(BIT MAP格式图像BMP(BIT MAP位图的文件结构:具体组成图:BITMAPFILEHEADER位图文件头(只用于BMP文件)bfType="BM" bfSize bfReserved1bfReserved2bfOffBitsbiSize biWidthbiHeight biPla nesbiBitCou ntbiCompressi onbiSizeimagebiXPelsPerMeterbiY PelsPerMeterbiClrUsedbiCirimporta nt单色DIB有2个表项16色DIB有16个表项或更少256色DIB有256个表项或更少真彩色DIB没有调色板每个表项长度为4字节(32位)像素按照每行每列的顺序排列每一行的字节数必须是4的整数倍BITMAPINFOHEAD位图信息头Palette 调色板DIBPixels DIB 图像数据1. BMP文件组成BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成.2. BMP文件头BMP文件头数据结构含有BMP文件的类型(必须为BMP)文件大小(以字节为单位)、位图文件保留字(必须为0)和位图起始位置(以相对于位图文件头的偏移量表示)等信息.3. 位图信息头BMP位图信息头数据用于说明位图的尺寸(宽度,高度等都是以像素为单位,大小以字节为单位,水平和垂直分辨率以每米像素数为单位),目标设备的级别,每个像素所需的位数,位图压缩类型(必须是0)等信息.4. 颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色.具体包含蓝色、红色、绿色的亮度(值范围为0-255)位图信息头和颜色表组成位图信息5. 位图数据位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上.Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充.3.3 BMP(BIT MAP )位图的显示:①一般显示方法:1. 申请内存空间用于存放位图文件2. 位图文件读入所申请内存空间中3. 在函数中用创建显示用位图,用函数创建兼容DC用函数选择显示删除位图但以上方法的缺点是:1)显示速度慢;2)内存占用大;3)位图在缩小显示时图形失真大,(可通过安装字体平滑软件来解决);4)在低颜色位数的设备上(如256显示模式)显示高颜色位数的图形(如真彩色)图形失真严重.②BMP位图缩放显示:用视频函数来显示位图,内存占用少,速度快,而且还可以对图形进行淡化(Dithering )处理.淡化处理是一种图形算法,可以用来在一个支持比图像所用颜色要少的设备上显示彩色图像.BMP位图显示方法如下:1. 打开视频函数,一般放在在构造函数中2. 申请内存空间用于存放位图文件3. 位图文件读入所申请内存空间中4. 在函数中显示位图5. 关闭视频函数,一般放在在析构函数中以上方法的优点是:1)显示速度快;2)内存占用少;3)缩放显示时图形失真小,4)在低颜色位数的设备上显示高颜色位数的图形图形时失真小;5)通过直接处理位图数据,可以制作简单动画3.4程序中用到的访问函数Win dows支持一些重要的DIB访问函数,但是这些函数都还没有被封装到MFC中,这些函数主要有:1. SetDIBitsToDevice 函数:该函数可以直接在显示器或打印机上显示DIB.在显示时不进行缩放处理.2. StretchDIBits 函数:该函数可以缩放显示DIB于显示器和打印机上.3. GetDIBits 函数:还函数利用申请到的内存,由GDI位图来构造DIB.通过该函数,可以对DIB的格式进行控制,可以指定每个像素颜色的位数,而且可以指定是否进行压缩.4. CreateDIBitmap函数:利用该函数可以从DIB出发来创建GDI 位图.5. CreateDIBSection 函数:该函数能创建一种特殊的DIB,称为DIB项,然后返回一个GDI位图句柄.6. LoadImage函数:该函数可以直接从磁盘文件中读入一个位图,并返回一个DIB句柄.7. DrawDibDraw 函数:Windows提供了窗口视频(VFW)组件,Visual C++支持该组件.VFW中的DrawDibDraw函数是一个可以替代StretchDIBits 的函数.它的最主要的优点是可以使用抖动颜色,并且提高显示DIB的速度,缺点是必须将VFW弋码连接到进程中.3.5图像的几何变换图像的几何变换,通常包括图像的平移、图像的镜像变换、图像的转置、图像的缩放和图像的旋转等.数字图像处理实验报告2一、实验的目的和意义实验目的:本实验内容旨在让学生通过用VC等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。

数字图像处理与分析习题及答案.

数字图像处理与分析习题及答案.
MATLAB的图像处理工具箱MATLAB是由MathWorks公司推出的用于数值计算的有 力工具,是一种第四代计算机语言,它具有相当强大的矩阵运算和操作功能,力求使人们摆 脱繁杂的程序代码。MATLAB图像处理工具箱提供了丰富的图像处理函数,灵活运用这些 函数可以完成大部分图像处理工作,从而大大节省编写低层算法代码的时间,避免程序设计 中的重复劳动。MATLAB图像处理工具箱涵盖了在工程实践中经常遇到的图像处理手段和 算法,如图形句柄、图像的表示、图像变换、二维滤波器、图像增强、四叉树分解域边缘检 测、二值图像处理、小波分析、分形几何、图形用户界面等。但是,MATLAB也存在不足 之处限制了其在图像处理软件中实际应用。首先,强大的功能只能在安装有MATLAB系统 的机器上使用图像处理工具箱中的函数或自编的m文件来实现。其次,MATLAB 使用行解 释方式执行代码,执行速度很慢。第三,MATLAB擅长矩阵运算,但对于循环处理和图形 界面的处理不及C++等语言。为此,通应用程序接口API 和编译器与其他高级语言(如C、 C++、Java等)混合编程将会发挥各种程序设计语言之长协同完成图像处理任务。API 支持 MATLAB与外部数据与程序的交互。编译器产生独立于MATLAB环境的程序,从而使其他 语言的应用程序使用MATLAB。
2.CorelDRAW:一种基于矢量绘图、功能强大的图形图像制作与设计软件。位图式图像 是由象素组成的,与其相对,矢量式图像以几何、色彩参数描述图像,其内容以线条和色块 为主。可见,采用不同的技术手段可以满足用户的设计要求。位图式图像善于表现连续、丰 富色调的自然景物,数据量较大;而矢量式图像强于表现线条、色块的图案,数据量较小。 合理的利用两种不同类型的图像表现方式,往往会收到意想不到的艺术效果。CorelDraw是当今流行的图像处理软件中为数不多的特点明显、功能强大的基于矢量绘图的软件包。利用 它,可以方便地制作精美的名片、贺卡、书签、图书封面、广告、宣传画等作品。

数字图像处理 实验报告(完整版).doc

数字图像处理 实验报告(完整版).doc

数字图像处理实验一 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显示出来观察图像的特征。

数字图像处理实验二图像灰度直方图实验

数字图像处理实验二图像灰度直方图实验

课程名称数字图像处理与分析实验序号实验二实验项目图像灰度直方图实验实验地点实验学时实验类型指导教师实验员专业班级学号姓名年月日分析:由生成的图像可知,索引图比灰度图的灰度等级更大,颜色更暗,二值图像只能描述其轮廓,不能描述细节。

代码:clear ; %清除内存原有一切变量RGB=imread('gou.jpg');[X1,map]=rgb2ind(RGB,64);I=rgb2gray(RGB); %把RGB图变为灰度图X2=rgb2ind(RGB,map);subplot(2,2,1),imshow(RGB);title('yuantu');subplot(2,2,2),imshow(I);title('graytu'); %显示灰度图subplot(2,2,3),imshow(X1,map);title('x1map');subplot(2,2,4),imshow(X2,map);title('x2map');运行结果:分析:由生成的图像可知,RGB图转换灰度图失败,不清楚原因,但是代码没有问题;由RGB转换的两张索引图和原图没有肉眼可识别的差别。

2、计算出一幅灰度图像的直方图代码:clear;close all;RGB=imread('gou.jpg'); % 把RGB图读入矩阵I=rgb2gray(RGB); %把RGB图变为灰度图imhist(I);title('实验1 直方图');运行结果:分析:灰度图较暗,因此灰度直方图像素灰度值取在左边较暗的区域。

3、对灰度图像进行简单灰度线形变换代码:RGB=imread('gou.jpg');I=rgb2gray(RGB);subplot(2,2,1),imshow(I);subplot(2,2,2),imhist(I);J=histeq(I);subplot(2,2,3),imshow(J);subplot(2,2,4), imhist(J); title('实验2 -直方图均衡化');运行结果:分析:由生成的图像可知,原始图像较暗且动态范围较小,反应在直方图上就是直方图所占据的灰度值范围比较窄,且集中在低灰度值一边。

数字图像处理实验报告(完整版)

数字图像处理实验报告(完整版)

数字图像处理实验一 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图像处理命令一、实验目得1、熟悉并掌握MATLAB工具得使用;2、实现图像得读取、显示、代数运算与简单变换。

二、实验环境MATLAB 6。

5以上版本、WIN XP或WIN2000计算机三、常用函数●读写图像文件1 imreadimread函数用于读入各种图像文件,如:a=imread('e:\w01。

tif')2 imwriteimwrite函数用于写入图像文件,如:imwrite(a,’e:\w02。

tif’,’tif')3imfinfoimfinfo函数用于读取图像文件得有关信息,如:imfinfo('e:\w01、tif’)●图像得显示1imageimage函数就是MATLAB提供得最原始得图像显示函数,如:a=[1,2,3,4;4,5,6,7;8,9,10,11,12];image(a);2 imshowimshow函数用于图像文件得显示,如:i=imread('e:\w01、tif');imshow(i);title(‘原图像’)%加上图像标题3 colorbarcolorbar函数用显示图像得颜色条,如:i=imread(’e:\w01。

tif');imshow(i);colorbar;4 figurefigure函数用于设定图像显示窗口,如:figure(1); /figure(2);5 subplot把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示、Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形、6 plot绘制二维图形plot(y)Plot(x,y)xy可以就是向量、矩阵。

图像类型转换1rgb2gray把真彩图像转换为灰度图像i=rgb2gray(j)2 im2bw通过阈值化方法把图像转换为二值图像I=im2bw(j,level)Level表示灰度阈值,取值范围0~1(即0.n),表示阈值取自原图像灰度范围得n%3 imresize改变图像得大小I=imresize(j,[m n])将图像j大小调整为m行n列图像运算1imadd两幅图像相加,要求同样大小,同种数据类型Z=imadd(x,y)表示图像x+y2 imsubstract两幅图像相减,要求同样大小,同种数据类型Z=imsubtract(x,y) 表示图像x-y3 immultiplyZ=immultiply(x,y) 表示图像x*y4 imdivideZ=imdivide(x,y) 表示图像x/y四、实验内容(请将实验程序填写在下方合适得位置,实验图像结果拷屏粘贴)1、读入一幅RGB图像,变换为灰度图像与二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像与灰度图像,注上文字标题。

数字图像处理处理大作业实验报告

数字图像处理处理大作业实验报告

数字图像处理处理大作业实验报告数字图像处理处理大作业实验报告PB11210***上上签MyZenith.N_3104_EVER实验一题目:线性插值改变图像大小实验目的:1、使用MATLAB编程实现对图片大小的改变操作,使所给图片达到所要求的效果。

2、通过对MATLAB的编程加强对图像处理的认识,初步学习MATLAB在图像处理中的基本应用实验内容:在这一项目中,同学们需要实现基于双线性插值的图像缩放算法。

作业中需实现如下功能:(a) 能够利用鼠标从实验图像中任意选取测试区域,并单独显示。

(b) 使用双线性插值算法对测试区域进行缩放处理,输出如下结果,放大到原始分辨率的2倍,放大到原始分辨率的4倍,缩小到原始分辨率的1/2倍。

实验原理:图像某点的值由最邻近的四个点联立方程决定。

实验代码:1、在主函数中,使用switch函数分别调用子函数,并且之前选择需要放大或者缩小的倍数。

代码如下:2、 choice=('Yes');3、4、5、6、7、8、while (minus(choice,('Yes'))==0) clear;close;F=imread('monarch.bmp'); I=imcrop(F); BR=I(:,:,1); BG=I(:,:,2); BB=I(:,:,3); [rows,cols]=size(BR);K = sqrt(str2double(inputdlg('·?±???', 'INPUT scalefactor', 1, {'2'})));9、 width = K * rows;10、 height = K * cols;11、12、13、14、 widthScale = rows/width;15、 heightScale = cols/height;16、17、 for x = 1:width-2for y = 1:height-218、 X = x * widthScale;Y = y * heightScale;19、20、 if (X/double(uint16(X)) == 1.0) && (Y/double(uint16(Y)) == 1.0) 21、 dstBR(x,y) = BR(int16(X),int16(Y));dstBG(x,y) = BG(int16(X),int16(Y));22、 dstBB(x,y) = BB(int16(X),int16(Y)); 23、 else24、 a = double(uint16(X));25、 b = double(uint16(Y));26、27、28、29、30、BRx11 = double(BR(a,b)); BRx12 = double(BR(a,b+1)); BRx21 = double(BR(a+1,b)); BRx22 = double(BR(a+1,b+1));31、32、 BGx11 = double(BG(a,b));33、 BGx12 = double(BG(a,b+1));34、 BGx21 = double(BG(a+1,b));35、 BGx22 = double(BG(a+1,b+1));36、37、38、39、40、BBx11 = double(BB(a,b)); BBx12 = double(BB(a,b+1)); BBx21 = double(BB(a+1,b)); BBx22 = double(BB(a+1,b+1));41、42、 w1 = (b+1-Y) * (a+1-X); 43、 w2 = (Y-b) * (a+1-X);w3 = (b+1-Y) * (X-a);44、 w4 = (Y-b) * (X-a); 45、 dstBR(x,y) = uint8( BRx11 * w1 + BRx12 * w2 + BRx21* w3 + BRx22 * w4 );46、 dstBG(x,y) = uint8( BGx11 * w1 + BGx12 * w2 + BGx21* w3 + BGx22 * w4 );47、 dstBB(x,y) = uint8( BBx11 * w1 + BBx12 * w2 + BBx21* w3 + BBx22 * w4 );48、 end49、 end50、 end51、52、53、54、55、56、57、OUT(:,:,1)=dstBR; OUT(:,:,2)=dstBG; OUT(:,:,3)=dstBB;imshow(I); figure; imshow(OUT);58、59、60、61、62、options.Interpreter = 'tex'; options.Default = 'Cancel'; choice = questdlg('??·','????','Yes','No',options); end实验结果:1、选择缩放倍数:2、所选择的图像源文件如下:3、用鼠标标定所需要进行缩放的区域:4、程序正常运行后缩放效果:4倍放大5、程序正常运行后缩放效果:2倍放大6、程序正常运行后的缩放效果:缩小一倍实验二题目:高斯滤波及中值滤波处理人为添加的椒盐噪声和高斯噪声实验目的:1、对所给定的图像使用MATLAB添加高斯噪声和椒盐噪声;2、再用MATLAB程序实现中值滤波和高斯滤波;3、计算所得到结果图像的PSNR,对它们进行分析与比较,从而理解各种滤波方法的优点与特性。

数字图像处理实验报告

数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告一、引言数字图像处理是计算机科学与工程领域中的一个重要研究方向。

通过使用数字化技术,对图像进行采集、传输、存储和处理,可以实现对图像的增强、恢复、分析和识别等功能。

本实验旨在通过对数字图像处理算法的实践应用,探索图像处理的原理和方法。

二、实验目的本实验的主要目的是掌握数字图像处理的基本概念和算法,并通过实际操作加深对图像处理原理的理解。

具体目标包括:1. 学习使用图像处理软件,如Photoshop或Matlab等。

2. 掌握图像增强的方法,如直方图均衡化、滤波和锐化等。

3. 理解图像压缩和编码的原理,如JPEG和PNG等格式。

4. 了解图像分割和边缘检测的基本算法,如阈值分割和Canny边缘检测等。

三、实验过程1. 图像增强图像增强是指通过一系列算法和技术,改善图像的质量和视觉效果。

在实验中,我们可以使用直方图均衡化算法来增强图像的对比度和亮度。

该算法通过将图像的像素值映射到一个更大的范围内,使得图像的亮度分布更加均匀。

2. 图像滤波图像滤波是指通过一系列滤波器对图像进行处理,以实现去噪、平滑和锐化等效果。

在实验中,我们可以使用平滑滤波器(如均值滤波器和高斯滤波器)来去除图像中的噪声。

同时,我们还可以使用锐化滤波器(如拉普拉斯滤波器和Sobel滤波器)来增强图像的边缘和细节。

3. 图像压缩和编码图像压缩是指通过减少图像的数据量来减小图像文件的大小,从而实现存储和传输的效率提升。

在实验中,我们可以使用JPEG和PNG等压缩算法来对图像进行压缩和编码。

JPEG算法通过对图像的频域进行离散余弦变换和量化,实现对图像的有损压缩。

而PNG算法则采用无损压缩的方式,通过对图像的差值编码和哈夫曼编码,实现对图像的高效压缩。

4. 图像分割和边缘检测图像分割是指将图像分成若干个区域,以实现对图像的目标提取和图像分析的目的。

而边缘检测是指通过检测图像中的边缘和轮廓,实现对图像的形状分析和目标识别。

数字图像处理实验报告Word版

数字图像处理实验报告Word版

《数字图像处理上机》实验报告班级:电信1101姓名:XXXXXX学号:0703110107数字图像处理上机实验1、实验目的了解matlab软件/语言,学会使用matlab的图像处理工具箱(Image Processing Toolbox),使学生初步具备使用该软件处理图像信息的能力,并能够利用该软件完成本课程规定的其他实验和作业。

熟悉常用的图像文件格式与格式转换;熟悉图像矩阵的显示方法(灰度、索引、黑白、彩色);熟悉图像矩阵的格式转换。

,学会使用MatLab对图像作滤波处理,使学生有机会掌握滤波算法,体会滤波效果。

了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力.2、实验要求学生应当基本掌握matlab的操作,掌握matlab图像处理工具箱中最常用的函数用法。

练习图像读写命令imread和imwrite并进行图像文件格式之间的转换。

学生应当完成对于给定图像+噪声,使用平均滤波器、中值滤波器对不同强度的高斯噪声和椒盐噪声,进行滤波处理;能够正确地评价处理的结果;能够从理论上作出合理的解释。

3、实验内容及步骤1、图像的显示与格式转换(1)学习matlab的基本操作;(2)使用imread函数读入图像;(3)使用figure函数创建窗口;(4)使用image或imshow函数显示图像;(5)使用colorbar函数在图像的右侧显示图像的亮度条。

2、图像的滤波(1) 考察平均滤波器对高斯噪声污染的图象去噪效果;(2) 考察中值滤波器对高斯噪声污染的图象去噪效果;(3) 考察平均滤波器对椒盐噪声污染的图象去噪效果;(4) 考察中值滤波器对椒盐噪声污染的图象去噪效果。

(5) 考察滤波器模板大小对平均滤波器滤波效果的影响;(6) 考察滤波器模板大小对中值滤波器滤波效果的影响;3、图像的频域变换在Matlab workspace中生成一幅大小为256×256像素的8位灰度图, 背景为黑色,中心有一个宽80像素高40像素的白色矩形。

数字图像处理与分析实验9-综合练习(一)-参考答案

数字图像处理与分析实验9-综合练习(一)-参考答案

实验9 综合练习(一)实验目的:1.对需要进行处理的图像分析,正确运用所学的知识,采用正确的步骤,对图像进行各类处理,以得到令人满意的图像效果。

实验内容:1.将bone_scan.jpg图像文件读入Matlab,按照以下步骤对其进行处理:a)用带对角线的Laplacian对其处理,以增强边缘。

W1=[-1 -1 -1-1 8 -1-1 -1 -1]b)用imadd函数叠加原始图像,可以看出边界增强了,但噪声增强了,应想法降低。

c)对原图像进行Sobel滤波。

(用fspecial生成)d)并用imfilter对(c)的结果进行5×5邻域平均,以减少噪声。

e)用immultiply函数处理经(b)步骤和(d)步骤处理后的图像,噪声得以减少。

f)最后用imadjust函数做幂次灰度变换,以增强dynamicrange。

(多试几次,参考:γ取0.5)要求用imshow函数显示经每一步处理后的图像,比对效果。

参考程序与处理结果================================================================== ====%Enhancing a image of whole body bone scan by combining various spatial% enhancement methods, the strategies is as following:% ========================================================% 1. Utilize the Laplacian to highlight fine detail% 2. Utilize the gradient to enhance prominent edges% 3. Combine Laplacian and gradient to get the detail-enhanced and noise-compressed image % 4. Increase the contrast of low gray levels by using a gray-level transformation.% ==========================================================% The original image named 'Fig0306(a)(bone-scan).tif' is under the% directory: J:\course teaching\ҽѧͼÏñ´¦Àí\ʵÑé\ʾÀýͼÏñ% Copyright by Huang zhongchao, July 16, 2006clear all;close all;f = imread('J:\course teaching\ҽѧͼÏñ´¦Àí\ʵÑé\ʾÀýͼÏñ\Fig0306(a)(bone-scan).tif');f1 = im2double(f);h1 = fspecial('sobel'); % or directly type h=[-1 -2 -1;0 0 0;1 2 1];g1 = imfilter(f1,h1);subplot(121);imshow(f);title('the original image');%b1 = mat2gray(g1);subplot(122);imshow(g1);title('the Sobel gradient');h2 = fspecial('average',5) ; %procducing a averageing filterg2 = imfilter(g1,h2);figure(2);subplot(121);imshow(g2);title(' the smoothed gradient image');h3 = [-1 -1 -1; -1 8 -1;-1 -1 -1]; % Laplacian maskg3 =imfilter(f1,h3);%b2 = mat2gray(g3);subplot(122);imshow(g3);title('the Laplacian image');g4 = g3+f1;figure(3);subplot(121);imshow(g4)title('sharped image by adding laplacian filtered and original image');g5 = g4.* g2;subplot(122);imshow(g5);title('the product of smoothed gradient and Laplacian image');g6 = g5+f1;figure(4);subplot(121);imshow(g6);title('the sum of product and original image');% constrast spreading by power-law transformation with r=0.5 and c=1;gamma = 0.5;c = 1;g7 = c.*g6.^gamma;figure(4);subplot(122);imshow(g7);title('the end result by combining the sharping and gradient operation');================================================================== ====运行结果参考:-----WORD格式--可编辑--专业资料----- --完整版学习资料分享----。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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函数检测角点。

相关文档
最新文档