《数字图像处理》上机实验报告3
数字图像处理实验报告

数字图像处理实验报告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版

《数字图像处理上机》实验报告班级:电信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像素的白色矩形。
数字图像处理上机实验报告

数字图像处理上机实验报告姓名:李青学号: 104090423学院:物理与电子信息学院班级: 10电子实验课题: 五类图像处理的运算方法任课教师:石俊生(教授)填表日期:2013年11月3日一.实验内容实验1:直方图均衡图像增强;实验2: 空域处理:不同平均模板大小:3⨯3、5⨯5、7⨯7去噪;实验3: 空域处理:不同中值模板大小:3⨯3、5⨯5、7⨯7去噪;实验4: 频域处理:对图像低通、高通、带通处理结果比较;实验5:常用边缘检测算子检测;实验6:逆滤波和维纳滤波对运动模糊复原;实验7:DPCM图像压缩。
二.实验目的学会用Matlab中的下列函数对输入图像进行上述5类运算;感受各种不同的图像处理方法对最终图像效果的影响。
Imhist;histeq;nlfilter;mean2;std2;fspecial;filter2;medfilt2;三.实验结果实验1:直方图均衡图像增强(a)原始图像及直方图均衡化后的图像(b)均衡化前后图像的直方图(c)调整灰度原始图像和调整灰度增强后图像实验2: 空域处理:不同平均模板大小:3⨯3、5⨯5、7⨯7去噪(a)原始图像和3*3模板去噪后图像(b)原始图像和5*5模板去噪后图像(c)原始图像和7*7模板去噪后图像实验3: 空域处理:不同中值模板大小:3⨯3、5⨯5、7⨯7去噪实验4: 频域处理:对图像低通、高通、带通处理结果比较(a)原图像与低通滤波图像(b)原图像与高通滤波图像(c)原图像与带通滤波图像实验5:常用边缘检测算子检测(1)lena(2)camaraman(3)Cell(4)rice(5)tire实验6:逆滤波和维纳滤波对运动模糊复原实验7:DPCM图像压缩四.结论与讨论(1)直方图均衡化是通过对原图像进行某种变换,重新分配图像像素值,把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内均匀分布的形式,从而使原始图像的直方图改变成均匀分布的直方图,达到增强图像整体对比度的效果。
数字图像处理实验报告

实验三、图像的傅立叶变换一、实验目的1、了解图像变换的意义和手段;2、熟悉傅里叶变换的性质;3、熟练掌握FFT变换及其应用;4、通过实验了解二维频谱的分布特点;5、通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换。
二、实验设备1、计算机;2、MATLAB软件;3、记录用的笔、纸。
4、移动式存储器(软盘、U盘等)。
三、实验原理1、应用傅立叶变换进行图像处理傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。
通过实验培养这项技能,将有助于解决大多数图像处理问题。
2、傅立叶(Fourier)变换的定义二维Fourier变换和二维离散傅立叶变换为:图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参1见相关书目,有关傅立叶变换的快速算法的程序不难找到。
实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。
四、实验步骤1、打开计算机,启动MATLAB程序;2、利用MatLab工具箱中的函数编制FFT频谱显示的函数;3、 a).调入、显示“实验一”获得的图像;图像存储格式应为“.gif”;b)对这幅图像做FFT并利用自编的函数显示其频谱;4、实现数字图像傅立叶变换的部分参考程序:I=imread(‘原图像名.gif’); %读入原图像文件imshow(I); %显示原图像fftI=fft2(I); %二维离散傅立叶变换sfftI=fftshift(fftI); %直流分量移到频谱中心RR=real(sfftI); %取傅立叶变换的实部II=imag(sfftI); %取傅立叶变换的虚部A=sqrt(RR.^2+II.^2);%计算频谱幅值A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225; %归一化figure; %设定窗口imshow(A); %显示原图像的频谱五、实验数据记录输入数字图像傅立叶变换的代码如下:I=imread(‘fengshu.gif’);imshow(I);fftI=fft2(I);sfftI=fftshift(fftI);RR=real(sfftI);II=imag(sfftI);A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;figure;imshow(A);运行以上程序原图像经傅立叶变换后的图像3实验四、图像的离散余弦变换和哈达玛变换一、实验目的1、了解图像离散余弦变换和逆变换的原理;2、理解离散余弦变换系数的特点;3、理解离散余弦变换在图像数据压缩中的应用;4、理解哈达玛变换的原理。
《数字图像处理》实验报告

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

实验三图像的几何变换一.实验目的及要求掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。
二、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1. 图像缩放clear all, close allI = imread('cameraman.tif');Scale = 1.35; % 将图像放大1.35倍J1 = imresize(I, Scale, 'nearest'); %using the nearest neighbor interpolationJ2 = imresize(I, Scale, 'bilinear'); %using the bilinear interpolationimshow(I), title('Original Image');figure, imshow(J1), title('Resized Image-- using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image-- using the bilinear interpolation ');% 查看imresize使用帮助help imresizeCommand窗口显示如下:IMRESIZE Resize image.B = IMRESIZE(A, SCALE) returns an image that is SCALE times thesize of A, which is a grayscale, RGB, or binary image.B = IMRESIZE(A, [NUMROWS NUMCOLS]) resizes the image so that it hasthe specified number of rows and columns. Either NUMROWS or NUMCOLS may be NaN, in which case IMRESIZE computes the number of rows orcolumns automatically in order to preserve the image aspect ratio.[Y, NEWMAP] = IMRESIZE(X, MAP, SCALE) resizes an indexed image.[Y, NEWMAP] = IMRESIZE(X, MAP, [NUMROWS NUMCOLS]) resizes an indexed image.T o control the interpolation method used by IMRESIZE, add a METHODargument to any of the syntaxes above, like this:IMRESIZE(A, SCALE, METHOD)IMRESIZE(A, [NUMROWS NUMCOLS], METHOD),IMRESIZE(X, MAP, M, METHOD)IMRESIZE(X, MAP, [NUMROWS NUMCOLS], METHOD) METHOD can be a string naming a general interpolation method: 'nearest' - nearest-neighbor interpolation'bilinear' - bilinear interpolation'bicubic' - cubic interpolation; the default method METHOD can also be a string naming an interpolation kernel: 'box' - interpolation with a box-shaped kernel'triangle' - interpolation with a triangular kernel(equivalent to 'bilinear')'cubic' - interpolation with a cubic kernel(equivalent to 'bicubic')'lanczos2' - interpolation with a Lanczos-2 kernel'lanczos3' - interpolation with a Lanczos-3 kernelFinally, METHOD can be a two-element cell array of the form {f,w}, where f is the function handle for a custom interpolation kernel, andw is the custom kernel's width. f(x) must be zero outside the interval -w/2 <= x < w/2. Your function handle f may be called with a scalar or a vector input.You can achieve additional control over IMRESIZE by using parameter/value pairs following any of the syntaxes above. For example:B = IMRESIZE(A, SCALE, PARAM1, VALUE1, PARAM2, VALUE2, ...)Parameters include:'Antialiasing' - true or false; specifies whether to performantialiasing when shrinking an image. Thedefault value depends on the interpolationmethod you choose. For the 'nearest' method,the default is false; for all other methods,the default is true.'Colormap' - (only relevant for indexed images) 'original'or 'optimized'; if 'original', then theoutput newmap is the same as the input map.If it is 'optimized', then a new optimizedcolormap is created. The default value is'optimized'.'Dither' - (only for indexed images) true or false;specifies whether to perform colordithering. The default value is true.'Method' - As described above'OutputSize' - A two-element vector, [MROWS NCOLS],specifying the output size. One element maybe NaN, in which case the other value iscomputed automatically to preserve the aspectratio of the image.'Scale' - A scalar or two-element vector specifying theresize scale factors. If it is a scalar, thesame scale factor is applied to eachdimension. If it is a vector, it containsthe scale factors for the row and columndimensions, respectively.Examples--------Shrink by factor of two using the defaults of bicubic interpolation and antialiasing.I = imread('rice.png');J = imresize(I, 0.5);figure, imshow(I), figure, imshow(J)Shrink by factor of two using nearest-neighbor interpolation. (This is the fastest method, but it has the lowest quality.)J2 = imresize(I, 0.5, 'nearest');Resize an indexed image.[X, map] = imread('trees.tif');[Y, newmap] = imresize(X, map, 0.5);imshow(Y, newmap)Resize an RGB image to have 64 rows. The number of columns is computed automatically.RGB = imread('peppers.png');RGB2 = imresize(RGB, [64 NaN]);Note----The function IMRESIZE in previous versions of the Image ProcessingT oolbox used a somewhat different algorithm by default. If you need the same results produced by the previous implementation, call the function IMRESIZE_OLD.Class Support-------------The input image A can be numeric or logical and it must be nonsparse. The output image is of the same class as the input image. The inputindexed image X can be uint8, uint16, or double.See also imresize_old, imrotate, imtransform, tformarray.Reference page in Help browserdoc imresize执行程序所得结果如下:改变参数Scale =0.5得到图形结果如下:对以上实验结果,分析如下:通过查看命令窗口查看imresize函数的使用方法。
数字图像处理实验三:图像的复原

南京工程学院通信工程学院实验报告课程名称数字图像处理C实验项目名称实验三图像的复原实验班级算通111 学生姓名夏婷学号 208110408 实验时间 2014年5月5日实验地点信息楼C322实验成绩评定指导教师签名年月日实验三、图像的恢复一、实验类型:验证性实验二、实验目的1. 掌握退化模型的建立方法。
2. 掌握图像恢复的基本原理。
三、实验设备:安装有MATLAB 软件的计算机四、实验原理一幅退化的图像可以近似地用方程g=Hf+n 表示,其中g 为图像,H为变形算子,又称为点扩散函数(PSF ),f 为原始的真实图像,n 为附加噪声,它在图像捕获过程中产生并且使图像质量变坏。
其中,PSF 是一个很重要的因素,它的值直接影响到恢复后图像的质量。
I=imread(‘peppers.png’);I=I(60+[1:256],222+[1:256],:);figure;imshow(I);LEN=31;THETA=11;PSF=fspecial(‘motion’,LEN,THETA);Blurred=imfilter(I,PSF,’circular’,’conv’);figure;imshow(Blurred);MATLAB 工具箱中有4 个图像恢复函数,如表3-1 所示。
这4 个函数都以一个PSF 和模糊图像作为主要变量。
deconvwnr 函数使用维纳滤波对图像恢复,求取最小二乘解,deconvreg 函数实现约束去卷积,求取有约束的最小二乘解,可以设置对输出图像的约束。
deconvlucy 函数实现了一个加速衰减的Lucy-Richardson 算法。
该函数采用优化技术和泊松统计量进行多次迭代。
使用该函数,不需要提供有关模糊图像中附加噪声的信息。
deconvblind 函数使用的是盲去卷积算法,它在不知道PSF 的情况下进行恢复。
调用deconvblind 函数时,将PSF 的初值作为一个变量进行传递。
数字图像处理 实验报告(完整版)

数字图像处理实验一 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显示出来观察图像的特征。
数字图像处理上机实验报告 (三)

图像处理上机实验报告第三次指导老师:许永忠组员姓名:龙斌王国健学号: 05102344(龙)05102350(王)班级:地物10-2班时间: 2013年6月中国矿业大学资源学院上机实验报告课程名称:数字图像处理班级地物10-2班组员姓名龙斌王国健组员学号0510234405102350指导教师许永忠日期2013.05.26第15 周星期日第7,8节上机时数2学时实验名称数字图像处理PS的简单应用实验目的1.学会进行一些简单的字体特效制作以及简单的图像合成。
2.学会辨别细微的真假变化。
实验内容1.继续熟悉ps的基本运用,理解ps技术在生活中的重要性;2.用ps技术合成一张自己的图片;3.比较两个三角形出现差异的原因。
实验步骤1. 照片合成a.选择一张风景图(图1)和自己一张生活照(图2),用钢笔工具沿着图2中的人物作路径,完成后ctrl+enter转化为选区,然后ctrl+j复制选区;图1 图2b.拖动选区至图1,ctrl+t调整选区大小,使选区下的人物在图1中的一个合适位置和比例;c.作水中倒影。
ctrl+j复制刚刚调整好的选区,再ctrl+t,选择垂直翻转,然后调整至适当的位置,使人物倒影于水中;d.选择“滤镜”—“扭曲”—“波纹”,使人物图像有轻微的水波荡漾状扭曲,然后调整其透明度,使倒影更逼真;e.做彩虹。
Ctrl+n新建一个空白图层,背景为透明。
选择渐变工具,对渐变色进行调整,从左到右依次为“赤橙黄绿青蓝紫”渐变;f.在图层中作小小拖动,然后选择滤镜—扭曲—极坐标即完成。
g.把“彩虹”拖至图层1,同理ctrl+t调整大小和位置,并与图层1进行滤色叠加,使彩虹颜色变淡,然后与人物倒影一样对彩虹做倒影即可;h.ctrl+s保存,最后效果如图3合图4。
j.同理照一张有老鹰,一张含老虎和一张自己图片,分别做选区抠出其中的老虎,老鹰和自己,然后都拖到草原中,再用橡皮工具进行适当擦除,使其充分与背景融合,再ctrl+l调整一下色相饱和度即可,成果见图5.1.龙斌合成成果图图32.王国健合成成果图2.三角形的比较有三种方法可比较出现这种情况的原因:第一种:图形直观比较:把上面的三角形按其边缘复制,并与下面三角形(有空白的)重合,我们会很容易的发现:虽然两个三角形的底边和高相等,但他们的斜边并不相等,即有空白正方形的三角形斜边并不是直线,而是一条微向上凸起的曲线(但由于很小,肉眼较难分辨),而它凸起的那小部分面积恰好就是空白正方形的面积。
数字图像处理实验报告实验三

代码:
I=imread('lines.png');
F=rgb2gray(I);
subplot(2,2,1);
imshow(I);
title('原始图像');
thread=130/255;
subplot(2,2,2);
imhist(F);
图5-2 添上一层(漆)
3.开运算open:
4.闭close:
5.HMT(Hit-Miss Transform:击中——击不中变换)
条件严格的模板匹配
模板由两部分组成。 :物体, :背景。
图5-3 击不中变换示意图
性质:
(1) 时,
(2)
6.细化/粗化
(1)细化(Thin)
去掉满足匹配条件的点。
图5-4 细化示意图
se = strel('ball',5,5);
I2 = imerode(I,se);
imshow(I), title('Original')
figure, imshow(I2), title('Eroded')
Matlab用imopen函数实现图像开运算。用法为:
imopen(I,se);
I为图像源,se为结构元素
构造一个中心具有菱形结构的结构元素,R为跟中心点的距离
SE = strel('rectangle',MN)
构造一个矩形的结构元素,MN可写在[3 4],表示3行4列
SE = strel('square',W)
构造一个正方形的矩阵。
图像处理上机实验报告图像处理实验报告

实 验 报 告课程名称: 图像处理实验题目: 图像处理上机实验报告姓名: ***院 系: 理学院数学系班 级: 09*****学 号: 109*******递交时间: 2012 年 07 月11 日评阅时间: 年 月 日评阅成绩:实 验 报 告 ☆ 装 订 线 ☆ 请将实验报告内容写在装订线目录一.读入图像,显示图像,以及对图像的基本操作;二.噪音图像的产生,热方程去噪以及PM模型去噪;三.经典TV模型;四.动态边界(拓扑分离)五.Guass磨光算子去噪正文一.读入图像,显示图像,以及对图像的基本操作1.读入图像,显示图像程序:Mypage1=imread('C5.bmp');figure(1);imshow(Mypage1);以上语句依次实现:imread命令将图像'C5.bmp'读入图像像素矩阵Mypage1→→开一个窗口→→命令将该矩阵在屏幕上显示,即显示图像'C5.bmp' ,这里显示的是彩色图像。
注意:imread()和imshow()既可以用来显示灰度图像,也用来显示彩色图像。
运行结果:2.对图像的基本操作1)将原图像转成灰度图像程序:Mypage11=Mypage1(:,:,1);figure(2);imshow(Mypage11);以上语句依次实现:将原图像转成灰度图像→→开一个窗口→→显示转化后的灰度图像Mypage11。
运行结果:2)图像色做差补.彩色图像作色差补程序:Mypage12=255-Mypage1;figure(3);imshow(Mypage12);以上语句依次实现:将彩色图像Mypage1的颜色做差补得到新图像→→开一个窗口→→显示做差补后的彩色图像Mypage12。
运行结果:.灰度图像作色差补程序:Mypage13=255-Mypage11;figure(4);imshow(Mypage13);以上语句依次实现:将灰度图像Mypage11的颜色做差补得到新图像→→开一个窗口→→显示做差补后的灰度图像Mypage13。
数字图像处理实验报告

数字图像处理实验报告引言数字图像处理是一门研究如何对图像进行数字化处理的学科,它的应用广泛,涵盖了图像的获取、增强、压缩、分割等多个方面。
本次实验旨在探索数字图像处理的基本原理和常用技术,并通过实践操作加深对数字图像处理的理解。
实验目的1.学习掌握数字图像处理的基本原理;2.熟悉常用的数字图像处理工具和方法;3.实践应用数字图像处理技术解决实际问题。
实验环境在本次实验中,我们使用了以下环境和工具:- 操作系统:Windows 10 - 编程语言:Python - 图像处理库:OpenCV实验步骤步骤一:图像获取与显示首先,我们需要获取一张待处理的图像,并对其进行显示。
在Python中,我们可以使用OpenCV库来实现图像的读取和显示。
以下是示例代码:import cv2# 读取图像image = cv2.imread('image.jpg')# 显示图像cv2.imshow('Image', image)cv2.waitKey(0)cv2.destroyAllWindows()步骤二:图像增强图像增强是数字图像处理中常用的技术之一,旨在改善图像的质量和可视化效果。
常见的图像增强技术包括灰度转换、直方图均衡化、滤波器等。
以下是示例代码:import cv2# 读取图像image = cv2.imread('image.jpg')# 灰度转换gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GR AY)# 直方图均衡化equalized_image = cv2.equalizeHist(gray_image)# 高斯滤波器blurred_image = cv2.GaussianBlur(equalized_image, (5, 5), 0)# 边缘增强enhanced_image = cv2.Canny(blurred_image, 100, 20 0)# 显示图像cv2.imshow('Enhanced Image', enhanced_image)cv2.waitKey(0)cv2.destroyAllWindows()步骤三:图像压缩图像压缩是数字图像处理中的重要话题,旨在减少图像的存储空间和传输带宽。
数字图像处理实验报告

重庆邮电大学《数字图像处理》课程上机实验学院生物信息学院专业生物医学工程班级 0611302姓名李霞学号 2013211957实验一MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
二、实验原理及知识点1、数字图像的表示和类别一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。
灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。
例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。
因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。
图像关于x和y坐标以及振幅连续。
要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。
将坐标值数字化成为取样;将振幅数字化成为量化。
采样和量化的过程如图1所示。
因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。
作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。
根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类:➢亮度图像(Intensity images)➢二值图像(Binary images)➢索引图像(Indexed images)➢RGB图像(RGB images)(1) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
若图像是double类,则像素取值就是浮点数。
数字图像处理上机实验报告

数字图像处理上机实验报告数字图像处理上机实验报告实验⼀:MATLAB⼯具箱的使⽤实验⽬的:11:了解matlab语⾔,熟悉并掌握matlab相关的处理语句。
2:了解matlab在图像处理中的优缺点。
3 熟悉matlab的使⽤技巧,能⽤matlab熟悉的对数字图像进⾏各种处理。
1 将⼀幅灰度图像转换成索引⾊图像。
I=imread('ngc4024m.tif');X=grayslice(I,16);imshow(I)figure,imshow(X,hot(16))2:对⼀副图像进⾏⼆值化处理。
load treesBW=im2bw(X,map,0.4);imshow(X,map)figure,imshow(BW)3:将索引⾊图像转化成灰度图像。
load trees I=ind2gray(X,map);imshow(X,map)figure,imshow(I)4:显⽰⼀幅图像。
load clown image(10,10,X) colormap(map)试验⼆图像变换实验⽬的:1 熟悉掌握DFT和DCT变换的matlab实现。
2 利⽤matlab试验DFT和DCT的变换,求出图像的频谱。
1.⼆维离散傅⾥叶变换的旋转型。
I=zeros(256,256);>> I(28:228,108:148)=1;>> imshow(I)J=fft2(I);>> F=abs(J);>> J1=fftshift(F);figure>> imshow(J1,[5 50])>> I(28:228,108:148)=1;>> J=imrotate(I,315,'bilinear','crop'); >>figure >> imshow(J)J1=fft2(J);>> F=abs(J1);>> J2=fftshift(F);figure>> imshow(J2,[5 50])2.图像的傅⾥叶频谱。
数字图像处理实验报告

数字图像处理实验报告重庆邮电⼤学《数字图像处理》课程上机实验学院⽣物信息学院专业⽣物医学⼯程班级 0611302姓名李霞学号 2013211957实验⼀MATLAB数字图像处理初步⼀、实验⽬的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利⽤MATLAB来获取图像的⼤⼩、颜⾊、⾼度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储⼀幅图像的⽅法。
5.图像间如何转化。
⼆、实验原理及知识点1、数字图像的表⽰和类别⼀幅图像可以被定义为⼀个⼆维函数f(x,y),其中x和y是空间(平⾯)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。
灰度是⽤来表⽰⿊⽩图像亮度的⼀个术语,⽽彩⾊图像是由单个⼆维图像组合形成的。
例如,在RGB彩⾊系统中,⼀幅彩⾊图像是由三幅独⽴的分量图像(红、绿、蓝)组成的。
因此,许多为⿊⽩图像处理开发的技术适⽤于彩⾊图像处理,⽅法是分别处理三副独⽴的分量图像即可。
图像关于x和y坐标以及振幅连续。
要将这样的⼀幅图像转化为数字形式,就要求数字化坐标和振幅。
将坐标值数字化成为取样;将振幅数字化成为量化。
采样和量化的过程如图1所⽰。
因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。
作为MATLAB基本数据类型的数值数组本⾝⼗分适于表达图像,矩阵的元素和图像的像素之间有着⼗分⾃然的对应关系。
根据图像数据矩阵解释⽅法的不同,MA TLAB把其处理为4类:亮度图像(Intensity images)⼆值图像(Binary images)索引图像(Indexed images)RGB图像(RGB images)(1) 亮度图像⼀幅亮度图像是⼀个数据矩阵,其归⼀化的取值表⽰亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
若图像是double类,则像素取值就是浮点数。
数字图像处理实验三中值滤波和均值滤波实验报告

数字图像处理实验三均值滤波、中值滤波的计算机实现崔雪莹计科1202班一、实验目的:1)熟悉均值滤波、中值滤波处理的理论基础;2)掌握均值滤波、中值滤波的计算机实现方法;3)学习VC++ 6。
0 的编程方法;4)验证均值滤波、中值滤波处理理论;5)观察均值滤波、中值滤波处理的结果。
二、实验的软、硬件平台:硬件:微型图像处理系统,包括:主机, PC机;摄像机;软件:操作系统:WINDOWS2000或WINDOWSXP应用软件:VC++ 三、实验内容:1)握高级语言编程技术;2)编制均值滤波、中值滤波处理程序的方法;3)编译并生成可执行文件;4)考察处理结果。
四、实验要求:1)学习VC++确6。
0 编程的步骤及流程;2)编写均值滤波、中值滤波的程序;3)编译并改错;4)把该程序嵌入试验二给出的界面中(作适当修改);5)提交程序及文档;6)写出本次实验的体会。
五、实验结果截图实验均值滤波采用的是3X3的方块,取周围的像素点取得其均值代替原像素点。
边缘像素的处理方法是复制边缘的像素点,增加一个边框,计算里面的像素值得均值滤波。
六、实验体会本次实验在前一次的实验基础上增加均值滤波和中值滤波,对于椒盐噪声的处理,发现中值滤波的效果更为好一点,而均值滤波是的整个图像变得模糊了一点,效果差异较大。
本次实验更加增加了对数字图像处理的了解与学习。
七、实验程序代码注释及分析.”菜单项添加到系统菜单中。
gbBlue;lpBits2[p2+1]=pPalette[Palette].rgbGreen;lpBits2[p2+2]=pPalette[Palette].rgbRed;}}delete lpTemp;}lpBits=lpBitmap+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);if (lpBackup) delete lpBackup;lpBackup=new BYTE[nLen];memcpy(lpBackup,lpBitmap,nLen);}void CHistDemoADlg::OnOpen() mp|所有文件|*.*||",this);//新建文件选择对话框if ()==IDOK){FileName=(); //得到文件的路径if (!(FileName,CFile::modeRead)) return; //以只读方式打开文件// TODO: add loading code hereif (lpBitmap) delete lpBitmap; //保证lpBitmap为空nLen=(int)(); //得到文件的长度lpBitmap=new BYTE[nLen]; //为lpBitmap分配空间(lpBitmap,nLen); //将文件的内容读入到lpBitmap所指向的内存区域LoadBitmap(); //调用LoadBitmap(),加载位图图像if (lpBitmap) (nWidth,nHeight,lpBits);}}void CHistDemoADlg::OnHist(){// TODO: 在此添加控件通知处理程序代码HistogramEq();}void GetPoints(int nWidth,int nHeight,BYTE *lpBits,BYTE *lpPoints){int x,y,p;int nByteWidth=nWidth*3;if (nByteWidth%4) nByteWidth+=4-(nByteWidth%4);for(y=0;y<nHeight;y++) //每一行{for(x=0;x<nWidth;x++) //每一列{p=x*3+y*nByteWidth;lpPoints[x+y*nWidth]=(BYTE)*(float)lpBits[p+2]+*(float)lpBits[p+1]+*(float)lpBits[p]+; //三种颜色的比例计算对应点的颜色值,并且强制转换成BYTE}}}void PutPoints(int nWidth,int nHeight,BYTE *lpBits,BYTE *lpPoints) //逐个对lpBits进行赋值{int nByteWidth=nWidth*3;if (nByteWidth%4) nByteWidth+=4-(nByteWidth%4);int x,y,p,p1;for(y=0;y<nHeight;y++) //每一行{for(x=0;x<nWidth;x++) //每一列{p=x*3+y*nByteWidth;p1=x+y*nWidth;lpBits[p]=lpPoints[p1];lpBits[p+1]=lpPoints[p1];lpBits[p+2]=lpPoints[p1];}}}void CHistDemoADlg::HistogramEq(void){if (lpBitmap==0) return;BYTE *lpOutput=new BYTE[nByteWidth*nHeight];HistogramEq1(nWidth,nHeight,lpBits,lpOutput);(nWidth,nHeight,lpOutput); //在直方图均衡化的区域显示结果delete lpOutput;NoColor(); //将原始图像转换成灰度图像}void CHistDemoADlg:: NoColor(){if (lpBitmap==0) return;int x,y,p;BYTE Point;for(y=0;y<nHeight;y++) //每一行{for(x=0;x<nWidth;x++) //每一列{p=x*3+y*nByteWidth;Point=(BYTE)*(float)lpBits[p+2]+*(float)lpBits[p+1]+*(float)lpBits[p]+;//计算颜色值,在0-255的灰度级之间lpBits[p+2]=Point;lpBits[p+1]=Point;lpBits[p]=Point;}}(nWidth,nHeight,lpBits);//将彩色图像转化成灰度图像}void CHistDemoADlg::HistogramEq1(int nWidth, int nHeight, BYTE *lpInput, BYTE *lpOutput){int x,y;BYTE *lpPoints=new BYTE[nWidth*nHeight];//像素点的个数GetPoints(nWidth,nHeight,lpInput,lpPoints); //lpPoints存的是颜色值int r[256],s[256]; //颜色值数组,统计对应颜色值像素点的个数ZeroMemory(r,1024);ZeroMemory(s,1024);for(y=0;y<nHeight;y++){ //统计对应颜色值像素点的个数,Point(x,y)是lpPoints(x,y)for(x=0;x<nWidth;x++){r[Point(x,y)]++;}}s[0]=r[0];for(y=1;y<256;y++){s[y]=s[y-1];s[y]+=r[y];} //计算颜色值的前y种颜色的总像素点的个数(像素点颜色值<=y)for(y=0;y<nHeight;y++){ //将计算对应点的像素值,直方图均匀化的结果保存在lpPointsfor(x=0;x<nWidth;x++){Point(x,y)=s[Point(x,y)]*255/nWidth/nHeight;}}PutPoints(nWidth,nHeight,lpOutput,lpPoints); //输出lpPoints到lpOutputdelete lpPoints;}void CHistDemoADlg::OnBnClickedClose(){// TODO: 在此添加控件通知处理程序代码//ExitProcess(0);//注意使用时先释放分配的内存,以免造成内存泄露//exit(0) ;//正常终止程序; exit(非0)非正常终止程序PostQuitMessage(0);//最常用}void CHistDemoADlg::OnBnClickedMeanfilter(){// TODO: 在此添加控件通知处理程序代码if (lpBitmap==0) return;BYTE *lpOutput=new BYTE[nByteWidth*nHeight];MeanFilter(nWidth,nHeight,lpBits,lpOutput);(nWidth,nHeight,lpOutput); //在直方图均衡化的区域显示结果delete lpOutput;NoColor(); //将原始图像转换成灰度图像}void CHistDemoADlg::MeanFilter (int nWidth,int nHeight,BYTE *lpInput,BYTE *lpOutput){int x,y;BYTE *lpPoints=new BYTE[nWidth*nHeight];//像素点的个数BYTE *lpPoints1 = new BYTE[(nWidth+2)*(nHeight+2)];GetPoints(nWidth,nHeight,lpInput,lpPoints); //lpPoints存的是颜色值for(y=1;y<nHeight+1;y++){ //中间最整块图像的拷贝for(x=1;x<nWidth;x++){Point1(x,y) = Point(x-1,y-1);//lpPoints1[y][x] = lpPoints[y-1][x-1];}}for(y=1;y<nHeight+1;y++){ //最左边和最右边一列的拷贝Point1(0,y) = Point(0,y-1);Point1(nWidth+1,y) = Point(nWidth-1,y-1);//lpPoints1[y][0] = lpPoints[y-1][0];//lpPoints1[y][nWidth+1] = lpPoints[y-1][nWidth-1];}for(x=0;x<nWidth+2;x++){ //最上边和最下边一行的拷贝Point1(x,0) = Point1(x,1);Point1(x,nHeight+1) = Point1(x,nHeight);//lpPoints1[0][x] = lpPoints1[1][x];//lpPoints1[nHeight+1][x] = lpPoints1[nHeight][x];}for(y=0;y<nHeight;y++){ //求以某点为中心的九个数平均值for (x=0;x<nWidth;x++){Point(x,y) = ( Point1(x,y) + Point1(x+1,y) + Point1(x+2,y) +Point1(x,y+1) + Point1(x+1,y+1) + Point1(x+2,y+1) +Point1(x,y+2) + Point1(x+1,y+2) + Point1(x+2,y+2) )/9;/*lpPoints[y][x] = (lpPoints1[y][x] + lpPoints1[y][x+1] + lpPoints1[y][x+2] +lpPoints1[y+1][x] + lpPoints1[y+1][x+1] + lpPoints1[y+1][x+2] +lpPoints1[y+2][x] + lpPoints1[y+2][x+1] + lpPoints1[y+2][x+2])/9;*/}}PutPoints(nWidth,nHeight,lpOutput,lpPoints); //输出lpPoints到lpOutputdelete lpPoints;}void CHistDemoADlg::MedianFilter(int nWidth,int nHeight,BYTE *lpInput,BYTE *lpOutput){int x,y;BYTE *lpPoints=new BYTE[nWidth*nHeight];//像素点的个数BYTE *lpPoints1 = new BYTE[(nWidth+2)*(nHeight+2)];GetPoints(nWidth,nHeight,lpInput,lpPoints); //lpPoints存的是颜色值for(y=1;y<nHeight+1;y++){ //中间一整块拷贝for(x=1;x<nWidth;x++){Point1(x,y) = Point(x-1,y-1);}}for(y=1;y<nHeight+1;y++){ //最左边和最右边一列的拷贝Point1(0,y) = Point(0,y-1);Point1(nWidth+1,y) = Point(nWidth-1,y-1);}for(x=0;x<nWidth+2;x++){ //最上边和最下边一行的拷贝Point1(x,0) = Point1(x,1);Point1(x,nHeight+1) = Point1(x,nHeight);}BYTE *window = new BYTE[9];for(y=0;y<nHeight;y++){for (x=0;x<nWidth;x++){int k = 0;for(int i=y ; i <= y+2 ; i++){for(int j=x ; j <= x+2; j++){if(k < 9)window[k++] = Point1(j,i);}}for (int m = 0; m < 5; ++m) //求9个数的中值,window[4]为中值{int min = m;for (int n = m + 1; n < 9; ++n)if (window[n] < window[min])min = n;// Put found minimum element in its placeBYTE temp = window[m];window[m] = window[min];window[min] = temp;}Point(x,y) = window[4];}}PutPoints(nWidth,nHeight,lpOutput,lpPoints); //输出lpPoints到lpOutputdelete lpPoints;}void CHistDemoADlg::OnBnClickedMedianfilter(){// TODO: 在此添加控件通知处理程序代码if (lpBitmap==0) return;BYTE *lpOutput=new BYTE[nByteWidth*nHeight];MedianFilter(nWidth,nHeight,lpBits,lpOutput);(nWidth,nHeight,lpOutput); //在中值滤波的区域显示结果delete lpOutput;NoColor(); //将原始图像转换成灰度图像}类继承自CWnd主要是图像显示方面的函数,如水平滚轮和垂直滚轮的事件函数,以及绘制函数OnPaint(),初始化函数等等,以及存放需要绘制的图像信息的成员变量。
数字图像处理实验报告

数字图象处理实验报告主要是图象的几何变换的编程实现,详细包括图象的读取、改写,图象平移,图象的镜像,图象的转置,比例缩放,旋转变换等.详细要求如下: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 调色板 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 程序中用到的访问函数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 图象的几何变换图象的几何变换,通常包括图象的平移、图象的镜像变换、图像的转置、图象的缩放和图象的旋转等.实验目的:本实验内容旨在让学生通过用VC等高级语言编写数字图象处理的一些根本算法程序,来稳固和掌握图象处理技术的根本技能,提高实际动手能力,并通过实际编程了解图象处理软件的实现的根本原理。
数字图像处理上机实验报告(基于Matlab)

除法运算可用于校正成像设备的非线性影响。MATLAB中调用imdivide函数进行两幅图像相除。调用格式如下:
Z=imdivide(X,Y),其中Z=X÷Y。
图像四则运算
因对uint8、uintl6数据,每步运算都要进行数据截取,将会减少输出图像的信息量。图像四则运算较好的办法是使用函数imlincomb。该函数按双精度执行所有代数运算操作,仅对最后的输出结果进行截取,该函数的调用格式如下:
s=uint8(real(ifft2(s)));
subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数
subplot(2,3,5),imshow(s); title('ILPF滤波(d0=50)'); %显示ILPF滤波后的图像
运行结果窗口截图:
第二次实验
1.图像复原算法
图像在形成、传输和记录过程中,由于受到多种原因的影响,图像的质量就会有所下降,典型的表现为图像模糊、失真、有噪声等,这一过程称为图像的退化。
图像复原是试图利用退化过程的先验知识使已退化的图像恢复本来面目,即根据退化的原因,分析引起退化的环境因素,建立相应的数学模型,并沿着使图像降质的逆过程恢复图像。目的在于消除或减轻在图像获取以及传输的过程中造成的图像品质下降,恢复图像的本来面目。因此,复原技术就是把退化模型化,并采用相反的过程进行处理,以便尽可能复原被退化图像的本来面目。
C=A(:,:,1); %取单色%
D=B(:,:,1);
figure('Name','图像逻辑运算')
res1=C&D; %C&D%
res2=C|D; %C|D%
《数字图像处理》实验报告

《数字图像处理》实验报告数字图像处理是计算机科学与技术领域中的一个重要分支,它涉及到对图像进行获取、处理、分析和显示等一系列操作。
在本次实验中,我们将学习和探索数字图像处理的基本概念和技术,并通过实验来加深对这些概念和技术的理解。
首先,我们需要了解数字图像的基本概念。
数字图像是由像素组成的二维矩阵,每个像素代表图像中的一个点,像素的灰度值或颜色值决定了该点的亮度或颜色。
在实验中,我们将使用灰度图像进行处理,其中每个像素的灰度值表示了该点的亮度。
在数字图像处理中,最基本的操作之一是图像的获取和显示。
我们可以通过摄像头或者从文件中读取图像数据,然后将其显示在计算机屏幕上。
通过这种方式,我们可以对图像进行观察和分析,为后续的处理操作做好准备。
接下来,我们将学习一些常见的图像处理操作。
其中之一是图像的灰度化处理。
通过将彩色图像转换为灰度图像,我们可以减少图像数据的维度,简化后续处理的复杂度。
灰度化处理的方法有多种,例如将彩色图像的RGB三个通道的像素值取平均值,或者使用加权平均值的方法来计算灰度值。
另一个常见的图像处理操作是图像的平滑处理。
图像平滑可以减少图像中的噪声,并使得图像更加清晰。
常用的图像平滑方法包括均值滤波和高斯滤波。
均值滤波通过计算像素周围邻域像素的平均值来平滑图像,而高斯滤波则使用一个高斯核函数来加权平均邻域像素的值。
除了平滑处理,图像的锐化处理也是数字图像处理中的一个重要操作。
图像的锐化可以增强图像的边缘和细节,使得图像更加清晰和鲜明。
常用的图像锐化方法包括拉普拉斯算子和Sobel算子。
这些算子通过计算像素周围邻域像素的差异来检测边缘,并增强边缘的灰度值。
此外,我们还将学习一些图像的变换操作。
其中之一是图像的缩放和旋转。
通过缩放操作,我们可以改变图像的尺寸,使其适应不同的显示设备或应用场景。
而旋转操作可以将图像按照一定的角度进行旋转,以达到某种特定的效果。
最后,我们将学习一些图像的特征提取和分析方法。
数字图像处理-实验报告

《数字图象处理》实验报告一、数字图像处理设计主要内容数字图象处理课程设计要求使学生掌握数字图像处理的基本算法的计算机实现,从而培养学生运用数字信号处理的原理解决生物医学、电子工程领域的实际问题的能力。
进一步提高程序设计及调试能力,初步掌握进行科学研究工作的主要步骤和方法,学习和掌握科学研究资料检索的方法,学习对已有资料进行消化总结的方法,学习撰写科学报告的基本方法。
二、前期工作1.查阅资料,对数字信号处理和图象处理基本理论和实践作一全面了解;2.根据实验内容和要求确定实验思路,熟悉Matlab语言,理解对数字信号处理进行计算机仿真原理;三、设计工作1.图像平滑a.利用二个低通邻域平均模板(3×3和9×9)对一幅图象进行平滑,验证模板尺寸对图象的模糊效果的影响。
b.利用一个低通模板对一幅有噪图象(GAUSS白噪声)进行滤波,检验两种滤波模板(分别使用一个5×5的线性邻域平均模板和一个非线性模板:3×5中值滤波器)对噪声的滤波效果。
c.选择一个经过低通滤波器滤波的模糊图象,利用sobel水平边缘增强高通滤波器(模板)对其进行高通滤波图象边缘增强,验证模板的滤波效果。
d.选择一幅灰度图象分别利用一阶Sobel算子和二阶Laplacian算子对其进行边缘检测,验证检测效果。
2.图像增强a.直方图均衡化增强图像对比度的MATLAB程序。
b.采用线性变换进行图像增强的MATLAB程序。
c.采用边界锐化算法增强图像的MATLAB程序。
四、程序设计1.利用二个低通邻域平均模板(3×3和9×9)对一幅图象进行平滑,验证模板尺寸对图象的模糊效果的影响。
程序如下:l=imread('E:/matlab/test1/sample.jpg');L=rgb2gray(l);subplot(1,3,1);imshow(L);title('原图');j=fspecial('average');j1=filter2(j,L)/255;subplot(1,3,2);imshow(j1);title('3*3 滤波');k=fspecial('average',9);k1=filter2(k,L)/255;subplot(1,3,3);imshow(k1);title('9*9 滤波');仿真结果如下图:原图3*3 滤波9*9 滤波2.利用一个低通模板对一幅有噪图象(GAUSS白噪声)进行滤波,检验两种滤波模板(分别使用一个5×5的线性邻域平均模板和一个非线性模板:3×5中值滤波器)对噪声的滤波效果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理
上机实验报告
实验名称:图像变换
学期:2014/2015上学期
班级:电子信息工程1102
姓名:陈玮
学号:3110209424
实验时间:2014.11.10
实验三:图像变换
1 目的
1.了解图像空域和频域的概念.
2.掌握几种常用的图像变换原理,包括傅里叶变换、离散余弦变换等.
3.了解图像变换的快速算法
2 器材
1.BMP格式灰度图像
2.MAtlab软件
3.台式PC机
3 原理
1.离散余弦变换
数字图像处理中的正交变换,除了傅里叶变换以外,还经常用到离散余弦变换(Discrete Cosi ne Transform,DCT)。
DCT是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(Discrete Fourier Transform, DFT),但是只使用实数。
离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数)。
对于离散余弦变换主要用于对信号和图像进行有损数据压缩。
其具有以下特点:离散余弦变换具有很强的“能量集中”特性。
大多数的自然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分。
对于一维的离散傅里叶变换
=
上式中F(u)是第u个余弦变换系数,u是广义频率变量u=1,2,…,N-1;f(x)是时域N点序列,x =1,2,…,N-1;两式构成了一维离散余弦变换对。
对于二维离散傅里叶变换
二维离散余弦变换具有系数为实数,正变换与逆变换的核相同的特点。
离散余弦变换是一种正交变换。
为了分析计算方便,还可以用矩阵的形式来表示。
设f为一个N点的离散信号序列,可以用一个N*1的列向量表示,F为频域中一个N* 的列向量。
N*N的矩阵C为离散余弦变换矩阵,一维离散余弦变换表示为:
二维离散余弦变换为:
正变换
2.傅里叶变换
1)数字图像傅里叶变换的频谱分布
数字图像的二维离散傅里叶变换所得结果的频率成分如下图所示,左上角为直流成分,变换结果的四个角的周围对应于低频成分,中央部位对应于高频部分。
为了便于观察谱的分布,使直流成分出现在窗口的中央,可采用图示的换位方法,根据傅里叶频率位移的性质,只需要用f(x,y)乘上因子进行傅里叶变换即可实现,变换后的坐标原点移动到了窗口中心,围绕坐标中心的是低频,向外是高频。
二维傅里叶变换的频谱分布
频率位移示例
上图为二维离散傅里叶变换的频率位移特性。
围绕坐标中心的是低频,向外是高频,频谱由中心向周边放射,而且各行各列的谱对中心点是共轭对称的,利用这个特性,在数据存储和传输时,仅存储和传输它们中的一部分,进行逆变换恢复原图像前,按照对称性补充另一部分数据,就可达到数据压缩的目的。
(2)对大多数无明显颗粒噪音的图像来说,低频区集中了85%的能量,这一点成为对图像变换压缩编码的理论根据,如变换后仅传送低频分量的幅值,对高频分量不传送,反变换前再将它们恢复为零值,就可以达到压缩的目的。
(3)图像灰度变化缓慢的区域,对应它变换后的低频分量部分;图像灰度呈阶跃变化的区域,对应变换后的高频分量部分。
除颗粒噪音外,图像细节的边缘、轮廓处都是灰度变化突变区域,它们都具有变换后的高频分量特征。
4 实验(设计)步骤
1.查找资料
2.理解算法原理
3.编写程序
4.仿真查错
5 设计结果与总结分析
结果分析:
离散余弦变换具有信息强度集中的特点。
图像进行DCT变换后,在频域中矩阵左上角低频的幅值大而右下角高频幅值小,经过量化处理后产生大量的零值系数,在编码时可以压缩数据,因此DCT被广泛用于视频编码图像压缩。
6参考文献
《数字图像处理(第三版)》电子工业出版社阮秋琦阮宇智等译
7实验代码
DCT_cof.m:
function au = DCT_cof(u)
if u==0
au=0.7071;
else
au=1;
end
end
DCT1D_my.m:
function C=DCT1D_my(f,N)
for u=1:N
sum=0;
for x=1:N
sum=sum+f(x)*cos(pi*(u-1)*(2*x-1)/(2*N)); end
C(u)=sqrt(2/N)*DCT_cof(u-1)*sum;
end
end
DCT2D_my.m:
function F=DCT2D_my(f,M,N)
Temp1=zeros(N);
ff1=double(Temp1);
Temp2=zeros(M);
ff2=double(Temp2);
for y=1:M
for x=1:N
Temp1(x)=f(x,y);
end
ff1=DCT1D_my(Temp1,N)
for x=1:N
f(x,y)=ff1(x);
end
end
for x=1:N
for y=1:M
Temp2(y)=f(x,y);
end
ff2=DCT1D_my(Temp2,M)
for y=1:M
f(x,y)=ff2(y);
end
end
F=f;
DCTexam.m:
clear;
P=imread('Miss.bmp');
P_double=double(P);
[m n]=size(P);
Q_double=DCT2D_my(P_double,m,n);
R=dct2(P);
Q=uint8(Q_double);
subplot(1,3,1),imshow(P),title('原始图像');
subplot(1,3,2),imshow(Q),title('自己的DCT图像');
subplot(1,3,3),imshow(log(abs(R))),title('Matlab自带的DCT图像');。