数字图像处理大作业报告

合集下载

数字图像处理实习报告

数字图像处理实习报告

数字图像处理实习报告在当今数字化的时代,数字图像处理技术在众多领域中发挥着至关重要的作用,从医疗诊断到卫星遥感,从娱乐产业到工业检测,其应用无处不在。

通过这次数字图像处理实习,我对这一领域有了更深入的了解和实践经验。

实习的初始阶段,我主要进行了相关理论知识的学习。

数字图像处理涵盖了众多概念,如图像的数字化表示、像素、灰度值、分辨率等。

了解这些基础知识是后续处理图像的基石。

同时,我还学习了常见的图像格式,如 JPEG、PNG、BMP 等,以及它们的特点和适用场景。

在掌握了一定的理论基础后,我开始接触图像处理的基本操作。

图像增强是我最先实践的部分,通过调整图像的对比度和亮度,能够使原本模糊不清或暗淡的图像变得更加清晰和易于观察。

例如,对于一张曝光不足的照片,增加亮度可以让隐藏在黑暗中的细节显现出来;而提高对比度则可以使图像中的不同区域更加分明,突出重点。

图像滤波是另一个重要的环节。

均值滤波可以有效地去除图像中的噪声,但在一定程度上会使图像变得模糊;中值滤波则能够在去除噪声的同时较好地保留图像的边缘细节。

我通过对不同类型和程度的噪声图像进行滤波处理,直观地感受到了它们的效果差异。

图像的几何变换也是实习中的关键内容。

图像的平移、旋转和缩放操作看似简单,但其背后涉及到复杂的数学计算。

在实际操作中,需要准确地计算变换矩阵,以确保图像在变换后的准确性和完整性。

实习过程中,我还深入研究了图像分割技术。

这是将图像分成不同区域或对象的过程,以便进行后续的分析和处理。

阈值分割是一种常见且简单的方法,通过设定一个阈值,将图像中的像素分为两类。

然而,对于复杂的图像,这种方法往往效果不佳,这时就需要更高级的分割算法,如基于边缘检测的分割或基于区域生长的分割。

在进行数字图像处理的过程中,我也遇到了一些挑战和问题。

例如,在处理大规模图像数据时,计算资源的限制可能导致处理速度缓慢;在选择图像处理算法时,需要根据具体的图像特点和需求进行权衡,否则可能无法达到理想的效果。

数字图像处理实验报告

数字图像处理实验报告

数字图像处理实验报告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编程语言和相关库实现了图像的读取、显示、灰度化、二值化、平滑处理、边缘检测和直方图均衡化等操作。

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

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

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

数字图像处理实验报告

数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告(一)实验目的1.理解数字图像处理的基本概念与原理。

2.掌握数字图像处理的基本方法。

3.掌握常用数字滤波器的性质和使用方法。

4.熟练应用数字图像处理软件进行图像处理。

实验器材计算机、MATLAB软件实验内容1.图像的读写与显示首先,我们需要在MATLAB中读入一幅图像,并进行显示。

% 导入图像文件I = imread('myimage.jpg');% 显示图像imshow(I);2.图像的分辨率与色彩空间转换数字图像处理中的一个重要概念是图像的分辨率,通常用像素数量表示。

图像的分辨率越高,代表着图像包含更多的像素,从而更具细节和清晰度。

在数字图像处理中,常常需要将一幅图像从一种色彩空间转换为另一种色彩空间。

RGB色彩空间是最常见的图像色彩空间之一,并且常常作为其他色彩空间的基础。

% 转换图像色彩空间J = rgb2gray(I);% 显示转换后的图像imshow(J);3.图像的增强与滤波图像的增强通常指的是对图像的对比度、亮度和清晰度等方面进行调整,以改善图像的质量和可读性。

数字图像处理中的滤波是一种常用的图像增强方法。

滤波器是一个能够对图像进行局部操作的矩阵,它能够提取或抑制特定的图像特征。

% 对图像进行平滑滤波K = imgaussfilt(J, 1);% 显示滤波后的图像imshow(K);4.数字图像处理在实际应用中的例子数字图像处理在很多实际应用中被广泛应用。

这些应用包括医疗成像、计算机视觉、人脸识别、安防监控等。

下面是数字图像处理在人脸识别应用中的一个简单例子。

% 导入图像文件I = imread('face.jpg');% 进行人脸检测faceDetector = vision.CascadeObjectDetector;bbox = step(faceDetector, I);% 在图像上标记人脸位置IFaces = insertObjectAnnotation(I, 'rectangle', bbox, 'Face');imshow(IFaces);实验结论通过本次实验,我已经能够理解数字图像处理的基本概念与原理,掌握数字图像处理的基本方法,熟练应用数字图像处理软件进行图像处理。

数字图像处理大作业报告

数字图像处理大作业报告

数字图像处理实验报告实验选题:选题二组员:学号:班级:指导老师:实验日期: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一. 实验内容:主要是图像的几何变换的编程实现,具体包括图像的读取、改写,图像平移,图像的镜像,图像的转置,比例缩放,旋转变换等.具体要求如下:1.编程实现图像平移,要求平移后的图像大小不变;2.编程实现图像的镜像;3.编程实现图像的转置;4.编程实现图像的比例缩放,要求分别用双线性插值和最近邻插值两种方法来实现,并比较两种方法的缩放效果;5.编程实现以任意角度对图像进行旋转变换,要求分别用双线性插值和最近邻插值两种方法来实现,并比较两种方法的旋转效果.二.实验目的和意义:本实验的目的是使学生熟悉并掌握图像处理编程环境,掌握图像平移、镜像、转置和旋转等几何变换的方法,并能通过程序设计实现图像文件的读、写操作,及图像平移、镜像、转置和旋转等几何变换的程序实现.三.实验原理与主要框架:3.1 实验所用编程环境:Visual C++(简称VC)是微软公司提供的基于C/C++的应用程序集成开发工具.VC拥有丰富的功能和大量的扩展库,使用它能有效的创建高性能的Windows应用程序和Web应用程序.VC除了提供高效的C/C++编译器外,还提供了大量的可重用类和组件,包括著名的微软基础类库(MFC)和活动模板类库(ATL),因此它是软件开发人员不可多得的开发工具.VC丰富的功能和大量的扩展库,类的重用特性以及它对函数库、DLL库的支持能使程序更好的模块化,并且通过向导程序大大简化了库资源的使用和应用程序的开发,正由于VC具有明显的优势,因而我选择了它来作为数字图像几何变换的开发工具.在本程序的开发过程中,VC的核心知识、消息映射机制、对话框控件编程等都得到了生动的体现和灵活的应用.3.2 实验处理的对象:256色的BMP(BIT MAP )格式图像BMP(BIT MAP )位图的文件结构:具体组成图: BITMAPFILEHEADER位图文件头(只用于BMP文件) bfType=”BM” bfSize bfReserved1bfReserved2bfOffBitsbiSizebiWidthbiHeightbiPlanesbiBitCountbiCompressionbiSizeImagebiXPelsPerMeterbiYPelsPerMeterbiClrUsedbiClrImportant单色DIB有2个表项16色DIB有16个表项或更少256色DIB有256个表项或更少真彩色DIB没有调色板每个表项长度为4字节(32位)像素按照每行每列的顺序排列每一行的字节数必须是4的整数倍BITMAPINFOHEADER 位图信息头 Palette 调色板 DIB Pixels 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 程序中用到的访问函数Windows支持一些重要的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等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。

数字图像处理学习总结及作业技术报告

数字图像处理学习总结及作业技术报告

数字图像处理学习总结及作业技术报告邱远军(武汉大学计算机学院武汉430072)1 图像工程的提出工程是指将然科学的原理应用到工业部门而形成的各学科的总称。

图像工程学科则是将数学、光学等基础科学的原理,结合在图像应用中积累的技术经验而发展起来的一个对整个图像领域进行研究应用的新学科。

2 图像工程的三个层次如图1所示,图像工程可以分为三个层次:低、中、高,相应的分别为图像处理,图像分析和图像理解。

低层次图像处理的特点是处理的输入输出都是图像,着重强调在图像之间进行的变换,如对图像进行各种加工以改善图像的视觉效果并为自动识别打基础, 或是对图像进行压缩编码以减少对其所需存储空间或传输时间、传输道路的要求。

中层次处理即图像分析的特点是输入图像,输出特征,主要是对图像中感兴趣的目标进行检测和测量, 以获得它们的客观信息, 从而建立对图像的描述。

如果说图像处理是一个从图像到图像的过程, 则图像分析是一个从图像到数据的过程。

这里数据可以是对目标特征测量的结果, 或是基于测量的符号表示。

它们描述了图像中目标的特点和性质。

高层次处理即图像理解的特点是模仿人类视觉进行感知,重点是在图像分析的基础上进一步研究图像中各个目标的性质和它们之间的相互联系,并得出对图像内容含义的理解以及对原来客观场景的解释,从而指导和规划行动。

原始图像数据经过三个层次的加工将逐步转化为更有组织和用途的信息。

3 数字图像处理系统的构成通过综合各种图像处理技术可以构建一个图像处理系统,一个基本的数字图像处理系统由图像输入、图像存储、图像通信、图像处理和分析五个模块组成,如图2所示。

3.1 数字图像输入模块:也称图像采集或图像数字化,是利用图像采集设备(数码相机、数码摄像机等)来获取数字图像,或通过数字化设备(如图像扫描仪)将要处理的连续图像转换成适于计算机处理的数字图像。

3.2数字图像存储模块:用于图像处理和分析的数字图像存储器可分为三类:处理和分析过程中使用的快速存储器;在线或联机存储器;不经常使用的数据库(档案库)存储器。

数字图像处理大作业(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、对⼀幅图像进⾏旋转,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与旋转后傅⾥叶频谱的对应关系。

数字图像处理期末大作业

数字图像处理期末大作业

数字图像处理期末大作业一、问题描述实现第十章中采用Hough变换来检测图像中圆的过程。

,通过包括平滑(把细节去除),边缘检测(得到轮廓)以及Hough变换得到的圆,并把结果叠加到原来的灰度图像上。

给出具体的过程,中间结果,最后结果,实现的代码,并写出报告。

二、图片的获取以及预处理针对老师提供的一副硬币图片,要求检测出其中的hough圆,并叠加到原图像上以便增强图像。

在检测hough圆之前,首先要对图像进行平滑处理,进行拉普拉斯变换,然后检测垂直方向,水平方向,+45度和-45度方向的边缘,将四个方向的边缘叠加起来,得到总的边缘,对该图像进行二值化,然后对得到的图像检测其hough圆,得到圆形边缘,将该图像叠加到原图像上,就实现了图像边缘增强的目的。

三、图像处理算法的基本原理以及处理结果本实验流程图如下:1.读取图像图像处理的第一步就是对所采集的图像进行读入,本次实验的输入图像是一幅灰度图像,不需要将图像转换成为灰度图像,直接利用函数imread ()完成。

原图像如下所示:原图像2.图像预处理在图像预处理中,我们完成了两步工作,首先使用方差为1的高斯噪声对图像进行平滑,然后进行拉普拉斯变换,即)],(*)([2y x f r h ∇,222r 2e 21)(σσ-=πr h 为方差为2σ的高斯噪声,本实验中12=σ。

又),(*)]([)],(*)([22y x f r h y x f r h ∇=∇,其中2224222]2[)(σσσr er r h --=∇,将)(2r h ∇和),(y x f 分别进行傅里叶别换,将其逐点相乘,再进行傅里叶反变换,就得到了预处理后的图像。

3.边缘检测对水平,垂直,+45度,-45度方向进行边缘检测,本实验中我们采用了Prewitt 梯度算子,它用于检测水平方向,垂直方向,+45度方向和-45度方向的掩膜分别如下:水平掩膜 垂直掩膜 +45度掩膜 -45度掩膜使用这四个掩膜分别对上一步得到的图像逐点进行处理,就可以得到四个方向的边缘了(本实验中边缘的一个像素都不处理),再将它们加起来,就得到了总的边缘,实验结果如下:水平边缘垂直边缘-45度边缘总的边缘如下图所示:4.二值化对上图得到的图像进行二值化,这里我采用的是循环方式确定图像全局阈值,即首先以图像的平均值作为阈值,将图像分成两部分,分别求两部分的平均值,新的阈值为这两个平均值的均值,重复上述过程,直到两次阈值之差小于特定的值时停止,并以最后一次得到的阈值对图像进行二值化,本实验中我要求两次阈值之差小于0.5时停止,最后得到的全局阈值为 -102.1332,二值化后的图像如下所示:二值化后的图像5.Hough变换检测圆形边界Hough 变换的原理就是利用图像全局特征将边缘像素连接起来组成区域封闭边界,它将图像空间转换到参数空间,在参数空间对点进行描述,达到检测图像边缘的目的。

昆明理工大学数字图像处理课程综合报告(大作业)

昆明理工大学数字图像处理课程综合报告(大作业)

数字图像处理课程综合报告学生姓名:xxx学号:2012xxxxxxxx学院:理学院专业年级:2012级电子信息科学与技术指导老师:桂进斌目录实验二:反色与二值化: (33)实验三:灰度变换 (55)线性变化 (88)指数变化 (99)对数变换 (1111)实验四:图像几何变换 (1212)图像平移 (1515)图像旋转 (1717)水平镜像 (2020)垂直镜像 (2121)实验五:直方图均衡化 (2222)实验六:图像的平滑与锐化 (2626)均值滤波 (2828)中值滤波 (2929)梯度锐化 (3232)Sobel算子锐化 (3333)实验七:彩色图像处理 (3434)读取R分量 (3434)读取G分量 (3636)读取B分量 (3838)实验八:图像频域高通和低通滤波变换 (4040)低通滤波 (4141)高通滤波 (4444)实验二:反色与二值化:图像的反色就是依次求出每个像素点的补色,由于用的是256位的图像,所以只需要使用255减去原本像素的色值即可。

图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。

在实验前期开发环境框架的搭建中就已经拿到图像在内存中的首地址存于Imgdata指针中,并开辟了一个用于存放处理后数据的内存空间Imgdata_tmp。

在以后的图像处理算法中只需要直接对Imgdata指向的数据进行处理,并把处理结果存放在Imgdata_tmp中即可。

实现代码:void MyBmp::Binaryzation(CDC *pDC){//binaryzation二值化if(m_DibHead==NULL)MessageBox(NULL,"获取文件头失败!","错误",MB_OK);if(m_hPalette!=NULL){HDC hdc=pDC->GetSafeHdc();::SelectPalette(hdc,m_hPalette,TRUE);}pDC->SetStretchBltMode(COLORONCOLOR);int x = m_DibHead->biWidth;int y = m_DibHead->biHeight;TmpBmp = new unsigned char[m_ImageSize];memset(TmpBmp,255,x*y);char temp;int ccc = 0;for (int i = 0;i<y; ++i)//行数for (int j = 0;j<x;++j){ccc++;temp = *(m_Image+i*x+j);if ((10*temp+10)>=255){TmpBmp[i*x+j] = (char)255;}elseTmpBmp[i*x+j] = 0;}//memcpy(m_Image,TmpBmp,x*y);::StretchDIBits(pDC->GetSafeHdc(),500,0,((400<=(m_DibHead->biW idth))?400:(m_DibHead->biWidth)),((400<=(m_DibHead->biHeight))?400:(m_DibHead->biHeight)),0,0, m_DibHead->biWidth,m_DibHead->biHeight,TmpBmp,(LPBITMAPINFO)m_DibHead,DIB_RGB_COLORS,SRCCOPY);delete[] TmpBmp;TmpBmp = NULL;}二值化效果:void MyBmp::Inverse(CDC *pDC){//反色if(m_DibHead==NULL)MessageBox(NULL,"获取文件头失败!","错误",MB_OK);if(m_hPalette!=NULL){HDC hdc=pDC->GetSafeHdc();::SelectPalette(hdc,m_hPalette,TRUE);}pDC->SetStretchBltMode(COLORONCOLOR);int x = m_DibHead->biWidth;int y = m_DibHead->biHeight;TmpBmp = new unsigned char[m_ImageSize];memset(TmpBmp,255,x*y);char temp;for (int i = 0;i<y; ++i)//行数for (int j = 0;j<x;++j){temp = m_Image[i*x+j];TmpBmp[i*x+j] = 255 - temp;}//memcpy(m_Image,TmpBmp,x*y);::StretchDIBits(pDC->GetSafeHdc(),500,0,((400<=(m_DibHead->biW idth))?400:(m_DibHead->biWidth)),((400<=(m_DibHead->biHeight))?400:(m_DibHead->biHeight)),0,0, m_DibHead->biWidth,m_DibHead->biHeight,TmpBmp,(LPBITMAPINFO)m_DibHead,DIB_RGB_COLORS,SRCCOPY);delete[] TmpBmp;TmpBmp = NULL;}反色效果:实验三:灰度变换灰度线性变换是灰度变换的一种,图像的灰度变换通过建立灰度映射来调整源图像的灰度从而达到图像增强的目的。

尹其畅 数字图像处理大作业

尹其畅 数字图像处理大作业

《数字图像处理》大作业——车牌识别(车牌定位和字符分割部分)学院:电子与控制工程学院专业:交通信息工程及控制学号:****************任课教师:***车牌识别系统1 车牌识别系统1.1车牌识别系统的概述目前随着科技和经济的日益发展,智能交通系统在世界范围内引起重视,我国已经将其列入科技计划重点实施。

智能交通系统是交通发展的必然趋势,而车牌识别系统是智能交通系统中的重要组成部分。

该系统可以记录十字路口违章车辆,实现高速公路,收费路口,停车场等地的收费。

既减少了人力,又节约了时间,还提高了效率。

车牌识别系统的主要任务是分析和处理摄取到的复杂背景下的车辆图像,定位分割牌照,最后自动识别汽车牌照上的字符,LPR是利用车辆牌照的唯一性来识别和统计车辆,它是以数字图像处理、模式识别、计算机视觉等技术为基础的智能识别系统。

在现代化交通发展中车牌识别系统是制约交通系统智能化、现代化的重要因素,LPR系统应该能够从一幅图像中自动提取车辆图像,自动分割牌照图像,对字符进行正确识别,从而降低交通管理工作的复杂度。

车牌字符识别的实质是对车牌上的汉字、字母和数字进行快速准确的识别并以字符串的形式输出识别结果,字符识别技术是整个车牌识别系统的关键。

车牌识别系统与其它图像识别系统相比较而言要复杂的多,在字符识别中,汉字识别是最难也是最关键的部分,很多国外较为成熟的车牌识别系统无法进入中国市场的原因就在于无法有效的识别汉字。

1.2车牌识别系统的结构和工作原理车牌识别技术的任务是处理、分析摄取的车辆图像,实现车牌号码的自动识别。

典型的车辆牌照识别系统是由图像采集系统、中央处理器、识别系统组成,一般还要连接相应的数据库以完成特定的功能。

当系统发现(通过埋地线圈或者光束检测)有车通过时,则发出信号给图像采集系统,然后采集系统将得到的图像输入识别系统进行识别,其识别结果应该是文本格式的车牌号码。

图1.1 车牌识别系统原理图车牌整体识别过程大体可分为四个步骤:图像预处理、车牌定位和分割、车牌字符分割和车牌字符识别。

数字图像处理实验报告(附答案解析)

数字图像处理实验报告(附答案解析)

实验一常用MATLAB图像处理命令一、实验目的1、熟悉并掌握MA TLAB工具的使用;2、实现图像的读取、显示、代数运算和简单变换。

二、实验环境MATLAB 6.5以上版本、WIN XP或WIN2000计算机三、常用函数●读写图像文件1 imreadimread函数用于读入各种图像文件,如:a=imread('e:\w01.tif')2 imwriteimwrite函数用于写入图像文件,如:imwrite(a,'e:\w02.tif',’tif’) 3 imfinfoimfinfo函数用于读取图像文件的有关信息,如: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可以是向量、矩阵。

图像类型转换1 rgb2gray//灰色把真彩图像转换为灰度图像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列图像运算1 imadd两幅图像相加,要求同样大小,同种数据类型Z=imadd(x,y)表示图像x+y2 imsubstract两幅图像相减,要求同样大小,同种数据类型Z=imsubtract(x,y)表示图像x-y3 immultiplyZ=immultiply(x,y)表示图像x*y4 imdivideZ=imdivide(x,y)表示图像x/y5:m = imadjust(a,[,],[0.5;1]) ;%图像变亮n = imadjust(a,[,],[0;0.5]) ;%图像变暗g=255-a;%负片效果四、实验内容(请将实验程序填写在下方合适的位置,实验图像结果拷屏粘贴)1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。

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

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

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

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

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

数字图像处理处理大作业实验报告数字图像处理处理大作业实验报告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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理
实验报告
实验选题:选题二
组员:
学号:
班级:
指导老师:
实验日期: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类的构成等。

实验主要是调用函数解决问题,所以总体来说,选题二比较简单。

相关文档
最新文档