图像灰度变换实验报告
- 格式:doc
- 大小:716.50 KB
- 文档页数:7
实验一图像增强实验一、实验目标:掌握图像增强的算法。
二、实验目的:1. 了解灰度变换增强和空域滤波增强的Matlab实现方法2. 掌握直方图灰度变换方法3. 掌握噪声模拟和图像滤波函数的使用方法三、实验内容:(1)图像的点操作、邻域操作算法。
(2)图像的直方图处理算法。
四、实验设备:1.PIII以上微机; 2.MATLAB6.5;五、实验步骤:(1)读入图像:用matlab函数实现图像读入(可读入Matlab中的标准测试图像)(原始图像)(2)实现图像点操作运算(如gamma校正,对数校正等)(3)实现图像的邻域处理(实现均值滤波,拉普拉斯滤波)(4)实现直方图均衡处理matlab 源程序clear all;clc;f=imread('girl_noise.jpg');figure,imshow(f),title('原始图像');[m,n]=size(f);f0= im2double(f); % 整型转换为double 类f1=f0;std_i=zeros(1,m-2);%灰线处理for i=2:m-1%灰线处理std_i(i-1)=std(f0(i,:));if(std_i(i-1)<0.1)for j=1:mf0(i,j)=(f0(i-1,j)+f0(i+1,j))/2;endendendfigure,imshow(f0),title('滤除灰线后的图像');fz=f0-f1;[r,c]=find(fz~=0);%寻找灰线噪声的位置f2=f0;change=0;count=0;for i=3:m-2%白线处理for j=1:mif(abs(f0(i,j)-f0(i-1,j))>0.2&&abs(f0(i,j)-f0(i+1,j))>0.2) count=count+1;endif(count>n*0.8)count=0;change=1;break;endendif(change==1)for k=1:mf0(i,k)=(f0(i-1,k)+f0(i+1,k))/2;endchange=0;count=0;endendfigure,imshow(f0),title('滤除白线后的图像');fz1=f2-f0;[r1,c1]=find(fz1~=0); %寻找白线噪声的位置fn = medfilt2(f0); %反射对称填充figure, imshow(fn),title('中值滤波后的图像');f0 = im2double(fn); % 整型转换为double 类g =2*f0- imfilter(f0,w4, 'replicate'); % 增强后的图像figure, imshow(g),title('高提升滤波图像(A=2)');图像处理结果六、结果分析从上面结果可以看出,带状噪声处理部分,已经基本将带状噪声去除。
图像增强实验报告图像增强实验报告引言:图像增强是数字图像处理中的重要技术之一,它可以通过改变图像的亮度、对比度、色彩等参数,使图像更加清晰、细节更加突出。
本实验旨在探究不同图像增强方法对图像质量的影响,并比较它们的效果。
一、实验目的通过实验比较不同的图像增强方法,包括直方图均衡化、拉普拉斯算子增强、灰度变换等,对图像质量的影响,了解各种方法的优缺点,为实际应用提供参考。
二、实验步骤1. 实验准备:准备一组包含不同场景、不同光照条件下的图像样本,以及实验所需的图像处理软件。
2. 直方图均衡化:将图像的直方图进行均衡化,使得图像的像素值分布更加均匀,从而提高图像的对比度和亮度。
3. 拉普拉斯算子增强:使用拉普拉斯算子对图像进行边缘增强,突出图像的细节和纹理。
4. 灰度变换:通过调整图像的灰度级别,改变图像的亮度和对比度,使图像更加清晰明亮。
5. 实验结果分析:对比不同图像增强方法处理后的图像,分析它们在视觉效果上的差异,并根据实验结果评估各种方法的优劣。
三、实验结果与讨论在本次实验中,我们选择了一张室内拍摄的暗淡图像作为样本进行增强处理。
首先,我们对该图像进行了直方图均衡化处理。
结果显示,通过直方图均衡化,图像的亮度和对比度得到了明显的提升,细节也更加清晰可见。
然而,由于直方图均衡化是全局处理,可能会导致图像的局部细节过于突出,从而影响整体视觉效果。
接下来,我们采用了拉普拉斯算子增强方法。
通过对图像进行边缘增强,图像的纹理和细节得到了突出展示。
然而,拉普拉斯算子增强也存在一定的局限性,对于噪声较多的图像,可能会导致边缘增强过程中出现伪影和锯齿现象。
最后,我们尝试了灰度变换方法。
通过调整图像的灰度级别,我们改变了图像的亮度和对比度,使图像的细节更加突出。
与直方图均衡化相比,灰度变换方法更加灵活,可以根据实际需求对图像进行个性化的调整。
综合对比三种图像增强方法的实验结果,我们可以得出以下结论:直方图均衡化适用于对整体亮度和对比度进行提升的场景;拉普拉斯算子增强适用于突出图像的边缘和纹理;灰度变换方法可以根据实际需求对图像进行个性化调整。
实验一灰度直方图1.1实验介绍直方图是对图像中灰度级分布的统计,是将数字图像中的所有像素,按照灰度值的大小,统计其所出现的频率。
灰度直方图可看作为灰度级的函数,表示为y=f(x),x是灰度级的取值,y是取该灰度值的像素个数。
直方图具有以下几条重要的性质,表征图像的一维信息,不能提供定位;可以与多个图像对应,但一幅图像只能有唯一的直方图;可以用来计算物体的面积;计算的图像面积可用来得到图像的概率密度函数和累积分布函数;子图直方图之和为整图直方图。
由于直方图能够渐简便直观地表征图像特性的信息,因此在图像处理中起着非常重要的作用,可以用来作为图像数字化的参数和确定分割图像阈值的依据。
本次实验目的通过对几幅8-bit的灰度图像的灰度直方图的比较与分析,理解灰度直方图的性质,然后利用直方图实现简单的图像分割,了解它的用途。
1.2数据介绍Test 文件夹中有如下图像:其中RGB.jpg为RGB彩色图像,在实验RGB图像基本操作中使用;Index.gif为索引图像,在实验索引图像基本操作中使用;Dark.jpg和low_contrast.jpg为灰度图像做对比度线性展宽操作中使用;Lung.jpg在灰级窗及灰级窗切片中使用;Light在综合操作中使用;1.3实验内容1)RGB图像基本操作用数码相机拍摄几幅数字图像,要求目标单一背景单一、简单。
如果处理的图像是RGB 图像,采用下面的处理步骤:1.用下列函数将它们转换成不同灰度级的图像,>>I=imread(‘<图像名>.<文件后缀>’); %打开的一般是彩色图像>>Ig=rgb2gray(I) %将彩色图像转化为灰度图像2.绘制图像>>figure;imshow(Ig); %在新窗口中绘制图像3.绘制直方图>>figure;imhist(Ig); %在新窗口中绘制Ig的直方图如果要在同一窗口中绘制图像和它的直方图,用下面的方式:>>subplot(3,1,1); imshow(Ig); %subplot指明窗口绘图区划分为3行1%列的区域,第三个参数1规定紧接着后%面的绘图结果在第1个区域中显示>>subplot(3,1,2);imhist(Ig); %在第2个区域显示直方图4.根据直方图,分析图像的亮度和对比度。
图像处理实验报告实验⼀基于matlab 的⼈脸识别技术⼀、实验⽬的1.熟悉⼈脸识别的⼀般流程与常见识别⽅法;2.熟悉不同的特征提取⽅法在⼈脸识别的应⽤;3.了解在实际的⼈脸识别中,学习样本数等参数对识别率的影响;4.了解⾮⼈脸学习样本库的构建在⼈脸识别的重要作⽤。
使⽤MATLAB 平台编程,采⽤K-L 变换、特征提取及图像处理技术,实现⼈脸识别⼆、实验内容与实验仪器、设备1.构建⾮⼈脸学习样本库;2.观测不同的特征提取⽅法对⼈脸识别率的影响;3.观测不同的学习样本数对⼈脸识别率的影响;1. PC 机-系统最低配置 512M 内存、P4 CPU ;2. Matlab 仿真软件- 7.0 / 7.1 / 2006a 等版本的Matlab 软件。
3. CBCL ⼈脸样本库三、实验原理1.⼈脸特征提取的算法通过判别图像中所有可能区域是否属于“⼈脸模式”的⽅法来实现⼈脸检测。
这类⽅法有:特征脸法、⼈⼯神经⽹络法、⽀持向量机法;积分图像法。
本次使⽤的是PCA(主成分分析法)其原理是:利⽤K-L 变换抽取⼈脸的主要成分,构成特征脸空间,识别时将测试图像投影到此空间,得到⼀组投影系数,通过与各个⼈脸图像⽐较进⾏识别。
对于⼀幅M*N 的⼈脸图像,将其每列相连构成⼀个⼤⼩为D=M*N 维的列向量。
D 就是⼈脸图像的维数,即是图像空间的维数。
设n 是训练样本的数⽬;X j 表⽰第j 幅⼈脸图像形成的⼈脸向量,则所需样本的协⽅差矩阵为:1()()m Ti i i S x u x u ==--∑ (1)其中U 为训练样本的平均图像向量:11mi i u x n ==∑ (2)令A=[x 1-u,x 2-u,...x n -u],则有S r =AA T ,其维数为D ×D 。
根据K-L 变换原理,需要求得的新坐标系由矩阵AA T 的⾮零特征值所对应的特征向量组成。
直接计算的计算量⽐较⼤,所以采⽤奇异值分解(SVD)定理,通过求解A T A 的特征值和特征向量来获得AA T 的特征值和特征向量。
灰度对数变换
灰度对数变换是一种在数字图像处理中广泛使用的图像增强技术,它
可以通过对图像的灰度进行变换来实现对图像质量的提升。
在灰度对
数变换中,图像的灰度值被转换为对数空间中的值,从而达到增强图
像的目的。
灰度对数变换的具体步骤如下:
1. 将图像的灰度范围限定在0到1之间,这可以通过将灰度值除以255来实现。
2. 对图像的灰度进行对数变换,具体公式为s = c*log(1+r),其中,s 表示转换后的灰度值,r表示原始灰度值,c为常数。
3. 将灰度值范围恢复到0到255之间,这可以通过将转换后的灰度值乘以255来实现。
通过灰度对数变换,可以使得图像中低灰度值区域的对比度得到增加,从而使得图像的细节更加突出。
同时,由于该技术能够有效抑制噪声,因此在图像增强中应用非常广泛,例如在医学影像领域中常用于增强
X光图像的细节。
需要注意的是,灰度对数变换的常数c需要根据具体应用的图像进行选择。
在选择c值时,应该考虑到灰度级数的大小、灰度对数变换的灵敏度以及应用后图像的亮度和对比度等因素。
总之,灰度对数变换是一种简单而有效的图像增强技术。
在实际应用中,我们需要根据具体情况选择合适的常数c值,从而能够达到目标效果。
同时,需要注意该技术的局限性,例如对于梯度较强的图像,可能需要采用其他增强技术。
计算机图像处理实验报告学院:信息学院班级:姓名:学号:实验内容:数字图像处理1、应用MATLAB语言编写显示一幅灰度图像、二值图像、索引图像及彩色图像的程序,并进行相互之间的转换;(1)、显示一副真彩RGB图像代码:I=imread('mikasa.jpg');>>imshow(I);效果:(2)、RGB转灰度图像代码:graycat=rgb2gray(I);>> subplot(1,2,1);>> subimage(I);>> subplot(1,2,2);>> subimage(graycat);效果:(3)、RGB转索引图像代码:[indcat,map]=rgb2ind(I,0.7);>> subplot(1,2,1);>> subimage(I);>> subplot(1,2,2);>> subimage(indcat,map);效果:(4)、索引图像转RGB代码:I1=ind2rgb(indcat,map);>>subplot(1,2,1);>>subimage(indcat,map);>>subplot(1,2,2);>>subimage(I1);效果:(5)、索引转灰度图像代码:i2gcat=ind2gray(indcat,map);>>subplot(1,2,1);>>subimage(indcat,map);>>subplot(1,2,2);>>subimage(i2gcat);效果:(6)、灰度转索引图像代码:[g2icat,map]=gray2ind(graycat,64);>>subplot(1,2,1);>>subimage(graycat);>>subimage(g2icat,map);效果:(7)、RGB转二值图像代码:r2bwcat=im2bw(I,0.5);>>subplot(1,2,1);>>subimage(I);>>subplot(1,2,2);>>subimage(r2bwcat);效果:(8)灰度转二值图像代码:g2bwcat=im2bw(graycat,0.5); subplot(1,2,1);>>subimage(graycat);>>subplot(1,2,2);>>subimage(g2bwcat);效果:(9)、索引转二值图像代码:>> i2bwcat=im2bw(indcat,map,0.7);>>subimage(indcat,map);>>subplot(1,2,2);>>subimage(i2bwcat);效果:2、应用MATLAB工具箱演示一幅图像的傅里叶变换、离散余弦变换,观察其频谱图。
[数字图像处理](⼀)彩⾊图像转灰度图像的三种⽅式与效果分析图像处理(⼀)彩⾊图⽚转灰度图⽚三种实现⽅式最⼤值法imMax=max(im(i,j,1),im(i,j,2),im(i,j,3))平均法imEva=im(i,j,1)3+im(i,j,2)3+im(i,j,3)3加权平均值法imKeyEva=0.2989×im(i,j,1)+0.5870×im(i,j,2)+0.1140×im(i,j,3)matlba实现clc;close all;clear all;% 相对路径读⼊图⽚(和代码在同⼀⽂件夹下)im = imread('p2.jpg');%---查看图⽚,检测是否成功读⼊% 对显⽰的图⽚进⾏排版subplot(2,3,4);imshow(im);% 对图⽚进⾏命名title('原图');[col,row,color] = size(im);%col为图⽚的⾏数,row为图⽚的列数,color对于彩⾊图⽚⼀般为3,每层对应RGB %利⽤matlab⾃带的函数进⾏ rgb_to_gray;im_matlab = rgb2gray(im);subplot(2,3,1);imshow(im_matlab);title('matlab⾃带rgb2gray');%--------------------------------------------------------%---⽤最⼤值法% 创建⼀个全为1的矩阵,长宽等同于原图的im_max = ones(col,row);for i = 1:1:colfor j = 1:1:rowim_max(i,j) = max( im(i,j,:) );endend% 将矩阵变为8byte⽆符号整型变量(不然⽆法显⽰图⽚)% 最好在计算操作结束后再变化,不然会有精度问题!!im_max = uint8(im_max);subplot(2,3,2);imshow(im_max);title('最⼤值法');%--------------------------------------------------------% 平均值法im_eva = ones(col,row);for i = 1:1:colfor j = 1:1:rowim_eva(i,j) = im(i,j,1)/3 + im(i,j,2)/3 + im(i,j,3)/3 ;% 两种的结果其实⼀样,但是如果先转换为uint8就会出现精度问题%sum1 = im(i,j,1)/3 + im(i,j,2)/3 + im(i,j,3)/3%sum2 = ( im(i,j,1) + im(i,j,2)+ im(i,j,3) )/3;%fprintf( " %.4f %.4f \n",sum1 ,sum2 ) ;endendim_eva = uint8(im_max);subplot(2,3,3);imshow(im_eva);title('平均值法');%--------------------------------------------------------% 加权平均法(rgb2gray所使⽤的权值)im_keyeva = ones(col,row);% 加权算法先转换为uint8计算效果更好im_keyeva = uint8(im_max);for i = 1:1:colfor j = 1:1:rowim_keyeva(i,j) = 0.2989*im(i,j,1) + 0.5870*im(i,j,2) + 0.1140*im(i,j,3) ;endendsubplot(2,3,5);imshow(im_keyeva);title('加权平均法');Processing math: 100%附matlab——rgb2gray源码function I = rgb2gray(X)%RGB2GRAY Convert RGB image or colormap to grayscale.% RGB2GRAY converts RGB images to grayscale by eliminating the% hue and saturation information while retaining the% luminance.%% I = RGB2GRAY(RGB) converts the truecolor image RGB to the% grayscale intensity image I.%% NEWMAP = RGB2GRAY(MAP) returns a grayscale colormap% equivalent to MAP.%% Class Support% -------------% If the input is an RGB image, it can be of any numeric type. The output% image I has the same class as the input image. If the input is a% colormap, the input and output colormaps are both of class double.%% Notes% -----% RGB2GRAY converts RGB values to grayscale values by forming a weighted % sum of the R, G, and B components:%% 0.2989 * R + 0.5870 * G + 0.1140 * B%% The coefficients used to calculate grayscale values in RGB2GRAY are% identical to those used to calculate luminance (E'y) in% Rec.ITU-R BT.601-7 after rounding to 3 decimal places.%% Rec.ITU-R BT.601-7 calculates E'y using the following formula:%% 0.299 * R + 0.587 * G + 0.114 * B%% Example% -------% I = imread('example.tif');%% J = rgb2gray(I);% figure, imshow(I), figure, imshow(J);%% indImage = load('clown');% gmap = rgb2gray(indImage.map);% figure, imshow(indImage.X,indImage.map), figure, imshow(indImage.X,gmap);%% See also RGB2IND, RGB2LIGHTNESS.% Copyright 1992-2020 The MathWorks, Inc.narginchk(1,1);isRGB = parse_inputs(X);if isRGBI = matlab.images.internal.rgb2gray(X);else% Color map% Calculate transformation matrixT = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]);coef = T(1,:);I = X * coef';I = min(max(I,0),1);I = repmat(I, [1 3]);end%--------------------------------------------------------------------------function is3D = parse_inputs(X)is3D = (ndims(X) == 3);if is3D% RGBif (size(X,3) ~= 3)error(message('MATLAB:images:rgb2gray:invalidInputSizeRGB'))end% RGB can be single, double, int8, uint8,% int16, uint16, int32, uint32, int64 or uint64validateattributes(X, {'numeric'}, {}, mfilename, 'RGB');elseif ismatrix(X)% MAPif (size(X,2) ~= 3 || size(X,1) < 1)error(message('MATLAB:images:rgb2gray:invalidSizeForColormap'))end% MAP must be doubleif ~isa(X,'double')error(message('MATLAB:images:rgb2gray:notAValidColormap'))endelseerror(message('MATLAB:images:rgb2gray:invalidInputSize'))end总结通过上⾯的代码结合实际的测试,果然,matlab⾃带的rgb2gray也就是加权平均的⽅法,对光线明暗的处理是最好的。
灰度线性变换
灰度线性变换(Gray-Level Linear Transformation, GLT)是一种常用的图像处理技术,可以通过线性变换来改变图像的亮度和对比度。
一般来说,每个像素的灰度都是由一个介于0到255之间的整数确定的,分别对应黑色和白色。
灰度线性变换就是通过改变灰度值的映射关系,来调整图像的亮度和对比度。
灰度线性变换的原理可以用以下直观的公式来描述:
g(x,y)=T(f(x,y)) 其中,T(x1)是为每个亮度值x1所设置的新的亮度值;
f(x,y)表示原图像的每个像素点;
一般来说,变换函数T(x1)可以用一次函数来描述,即 T(x1)=ax1+b (其中,a,b 为实数常量),由此可知,a的取值范围在0-1之间,表示图像亮度的比例; b的取值范围为0-255,表示图像的偏移量。
正如我们所知,灰度线性变换的优点是可以简单、快速地调整图像的亮度和对比度。
缺点是它不能改变图像的分布特征,只能做一些简单的变换,而不能实现图像的特定效果处理,比如拉伸度和畸变处理等。
因此,灰度线性变换通常只用于处理图像的简单变换,比如调整图像的亮度和对比度的需求,或者在彩色图像转换为灰度图像的过程中。
一般来说,使用灰度线性变换容易实现,而且对于一些常用的算法有很好的效果,所以经常被用来处理图像。
大学新闻与传播学院实验教学中心实验报告实验名称图像处理指导教师洪杰文华滢年级08 学号23 成绩一、预习部分1、实验目的2、实验基本原理3、主要仪器设备(含必要的元器件、工具)1、实验目的:(1)熟悉和掌握数字图像的基本概念和技术指标,掌握色彩模式、图像分辨率、图像深度、图像文件格式与图像的显示效果、文件容量的关系。
(2)了解和掌握数字图像压缩的概念,观察不同的压缩比对图像的影响。
(3)了解和掌握图像中色彩的确定及选取方法,掌握前景色和背景色的概念及调整方法,掌握色彩填充的基本概念及应用。
(4)了解和掌握图像处理软件Photoshop的基本功能和基本使用方法,熟练掌握图层与选择区的基本使用方法。
(5)通过创造性的构图和对布局及色彩等的巧妙处理,一幅好的图画可以将一个主题以含蓄而又深刻的方式予以提示,并往往具有比单纯的语言文字更强的表现力。
在掌握图像处理基本概念和Photoshop基本使用方法的基础上,对已有的数字图像做一些基本的创意设计和编辑处理。
2、实验基本原理:基于photoshop软件的图像处理。
3、主要仪器设备(含必要的元器件、工具):Adobe Photoshop二、实验操作部分1、实验操作过程2、实验数据、观察到的实验现象1、实验操作过程:1.图像的基本变换(1)自选一幅不小于400×400pixel的彩色数字图像。
在Photoshop中打开该图像,记录其技术参数:文件格式、文件容量,图像尺寸(pixel和cm)、分辨率、色彩模式等。
文件格式:JPEG 图像;文件容量:59.7kb;图像尺寸(pixel和cm):600×600pixel;分辨率:72像素/英寸;色彩模式:RGB模式。
(2)对该图像重采样,要求采样后的图像分辨率为150dpi,图像尺寸为300×300pixel。
色彩模式分别变换成灰度、Indexed和RGB模式,按BMP格式分别保存成不同名称的图像文件;重新打开并观察变换后的显示效果,并记录各个文件的容量。
数字图像处理与模式识别实验目的打开一幅图像,进行直方图均衡化。
并将其灰度线性变化,将灰度线性拉伸。
实验准备实验之前,收集数字图像处理编程的相关资料,查阅C或Java关于本实验图像处理的相关类库和编程核心。
经过C和Java相关资料编程的比较,Java将图像处理的类封装的较完整,运用起来比C灵活方便。
以下是相关类库和实现操作的方法:import java.awt.image.*;import javax.imageio.*; //相关的图像处理类库和方法封装在两个包中//Java读取图像的方法BufferedImage newImage = ImageIO.read(new File(filePath));int width = newImage.getWidth(); //获得图像的像素宽度int height = newImage.getHeight(); //获得图像像素的长度//获得图像的色彩模型RGB分量ColorModel colorModel = ColorModel.getRGBdefault();int r = colorModel.getRed(currPixArray[k]);int g = colorModel.getGreen(currPixArray[k]);int b = colorModel.getBlue(currPixArray[k]); //分别获得图像的rgb分量PixelGrabber p = new PixelGrabber(image, 0, 0, width, height, array, 0, width); //将image图像像素值读入一位矩阵实验步骤算法实现RGB图像转灰度图由于数字图像的直方图均衡化和灰度的线性拉伸都是基于灰度图的算法实现,本框架中增加了由彩色图转灰度图的功能。
简单讲述下算法思想:将存储图像的一维矩阵像素点彩色分量用ColorModel类中的getRed(),getGreen()和getBlue()方法读取,按照(r * 0.3 + g * 0.59 + b * 0.11)公式计算灰度值。
(2)原图傅里叶频谱图
3.结果分析
空间频率:在单位长度或单位空间范围内图像灰度(周期性)变化的次数。
3.结果分析
从右侧直方图中,可以看出,经对比加强后,图像灰度尺上灰度范围变化最为明显,灰度范围加大,这样使图片对比度加强。
而直方图均值化后的图像,从结果上看来灰度更为均匀,辨识度提高,图片亮度有所增强。
两种处理方式从不同的角度都使得图片更加清晰。
实验3 图像的平滑处理
1.实验程序
i=imread('C:\Users\Administrator\Desktop\图像\图像处理\w01.tif'); subplot(2,2,1);
imshow(i);
3.结果分析
原图像加高斯白噪声后,图片上明显增加了许多噪点,不再清晰,变得很粗糙。
3.结果分析。
《基础强化训练》设计报告题目:二维灰度图象的统计分析及变换处理专业班级:学生姓名:指导教师:2010 年 7 月 17 日《基础强化训练》设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 二维灰度图象的统计分析及(FFT)变换处理课程设计目的:1 较全面了解常用的数据分析与处理原理及方法;2 能够运用相关软件进行模拟分析;3 掌握基本的文献检索和文献阅读的方法;4 提高正确地撰写论文的基本能力。
课程设计内容和要求1 采集一幅像素大于64*64黑白图像;2 常规的数学统计数据处理:计算图象各象素点灰度值得均值、标准差、方差,并绘出灰度直方图;3 采用[FFT(傅立叶变换)]对图像进行分析初始条件:1 MATLAB软件。
2 数字信号处理与图像处理基础知识。
时间安排:第18周周一:安排任务19~20周:仿真设计(鉴主13楼计算机实验室)第20周周六:完成(答辩,提交报告,演示)指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 1Abstract 21 数据采集 31.1图像的选取 31.2 MATLAB读取方法 41.2.1 编辑M文件 41.2.2 图像的读取 41.2.3查看图像的格式 61.2.4 灰度值的获取 72 数据统计处理 82.1 均值计算 82.1.1 原理及计算公式 82.1.2 计算程序及结果 92.2 各像素点灰度值的标准差 92.3 各像素点灰度值的方差 102.4 灰度直方图 113.傅立叶变化 133.1 原理及计算公式 133.2 变换及逆变换程序及结果 143.3对变换后的图像的说明 164.总结(心得体会) 175.参考文献 18摘要MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
数字图像处理实验报告目录1.数字图像处理简介2.实验目的3.实验内容4.实验结果及代码展示5.算法综述6.M atlab优势7.总结8.存在问题一、数字图像处理简介图像处理,是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。
图像处理是信号处理在图像域上的一个应用。
目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。
此外,基于光学理论的处理方法依然占有重要的地位。
图像处理是信号处理的子类,另外与计算机科学、人工智能等领域也有密切的关系。
传统的一维信号处理的方法和概念很多仍然可以直接应用在图像处理上,比如降噪、量化等。
然而,图像属于二维信号,和一维信号相比,它有自己特殊的一面,处理的方式和角度也有所不同。
二、实验目的巩固所学知识,提高所学能力三、实验内容利用matlab的GUI程序设计一个简单的图像处理程序,并含有如下基本功能:1. 读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题2. 对给定图像进行旋转3.对给定的图像添加噪声(椒盐噪声、高斯噪声)四、实验结果及代码展示1.软件设计界面2.各模块功能展示以及程序代码(1)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题效果展示:代码:a = imread('C:\Documents and Settings\Administrator\桌面\数字图像\舞美.JPG');i = rgb2gray(a);I = im2bw(a,0.5);subplot(3,1,1);imshow(a);title('源图像')subplot(3,1,2);imshow(i);title('灰度图像')subplot(3,1,3);imshow(I);title('二值图像')(2)图像旋转原图效果展示:代码:clc;clear all;close all;Img=imread('D:\My Documents\My Pictures\5.JPG'); Img=double(Img);[h w]=size(Img);alpha=pi/4;wnew=w*cos(alpha)+h*sin(alpha);hnew=w*sin(alpha)+h*cos(alpha);wnew=ceil(wnew);hnew=ceil(hnew); u0=w*sin(alpha);T=[cos(alpha),sin(alpha);-sin(alpha),cos(alpha)]; Imgnew2=zeros(hnew,wnew);Imgnew1=zeros(hnew,wnew); for u=1:hnewfor v=1:wnewtem=T*([u;v]-[u0;0]);x=tem(1);y=tem(2);if x>=1&&x<=h&&y>=1&&y<=wx_low=floor(x);x_up=ceil(x);y_low=floor(y);y_up=ceil(y);if (x-x_low)<=(x_up-x)x=x_low;elsex=x_up;endif (y-y_low)<=(y_up-y)y=y_low;elsey=y_up;endp1=Img(x_low,y_low);p2=Img(x_up,y_low);p3=Img(x_low,y_low);p4=Img(x_up,y_up);s=x-x_low;t=y-y_low;Imgnew1(u,v)=Img(x,y);Imgnew2(u,v)=(1-s)*(1-t)*p1+(1-s)*t*p3+(1-t)*s*p2+s*t*p4;endendendfigure;imshow(Imgnew2,[]);B=imrotate(Img,alpha/pi*180);figure;imshow(B,[]);(3)对给定的图像添加噪声(斑点噪声、高斯噪声)效果展示:代码:I= imread('D:\My Documents\My Pictures\5.JPG');figure,subplot(211);imshow(I);title('原图');J1=imnoise(I,'gaussian',0,0.02);subplot(223);imshow(J);title('添加高斯噪声');J=imnoise(I,'speckle',0.04);subplot(224);imshow(J);title('添加斑点噪声');五、算法综述灰度图像:一幅完整的图像,是由红色、绿色、蓝色三个通道组成的。
方法一:对于彩色转灰度,有一个很著名的心理学公式:Gray = R*0.299 + G*0.587 + B*0.114方法二:而实际应用时,希望避免低速的浮点运算,所以需要整数算法。
注意到系数都是3位精度的没有,我们可以将它们缩放1000倍来实现整数运算算法:Gray = (R*299 + G*587 + B*114 + 500) / 1000RGB一般是8位精度,现在缩放1000倍,所以上面的运算是32位整型的运算。
注意后面那个除法是整数除法,所以需要加上500来实现四舍五入。
就是由于该算法需要32位运算,所以该公式的另一个变种很流行:Gray = (R*30 + G*59 + B*11 + 50) / 100方法三:上面的整数算法已经很快了,但是有一点仍制约速度,就是最后的那个除法。
移位比除法快多了,所以可以将系数缩放成2的整数幂。
习惯上使用16位精度,2的16次幂是65536,所以这样计算系数:0.299 * 65536 = 19595.264 ≈ 195950.587 * 65536 + (0.264) = 38469.632 + 0.264 = 38469.896 ≈ 384690.114 * 65536 + (0.896) = 7471.104 + 0.896 = 7472可能很多人看见了,我所使用的舍入方式不是四舍五入。
四舍五入会有较大的误差,应该将以前的计算结果的误差一起计算进去,舍入方式是去尾法:写成表达式是:Gray = (R*19595 + G*38469 + B*7472) >> 162至20位精度的系数:Gray = (R*1 + G*2 + B*1) >> 2Gray = (R*2 + G*5 + B*1) >> 3Gray = (R*4 + G*10 + B*2) >> 4Gray = (R*9 + G*19 + B*4) >> 5Gray = (R*19 + G*37 + B*8) >> 6Gray = (R*38 + G*75 + B*15) >> 7Gray = (R*76 + G*150 + B*30) >> 8Gray = (R*153 + G*300 + B*59) >> 9Gray = (R*306 + G*601 + B*117) >> 10Gray = (R*612 + G*1202 + B*234) >> 11Gray = (R*1224 + G*2405 + B*467) >> 12Gray = (R*2449 + G*4809 + B*934) >> 13Gray = (R*4898 + G*9618 + B*1868) >> 14Gray = (R*9797 + G*19235 + B*3736) >> 15Gray = (R*19595 + G*38469 + B*7472) >> 16Gray = (R*39190 + G*76939 + B*14943) >> 17Gray = (R*78381 + G*153878 + B*29885) >> 18Gray = (R*156762 + G*307757 + B*59769) >> 19Gray = (R*313524 + G*615514 + B*119538) >> 20仔细观察上面的表格,这些精度实际上是一样的:3与4、7与8、10与11、13与14、19与20所以16位运算下最好的计算公式是使用7位精度,比先前那个系数缩放100倍的精度高,而且速度快:Gray = (R*38 + G*75 + B*15) >> 7其实最有意思的还是那个2位精度的,完全可以移位优化:Gray = (R + (WORD)G<<1 + B) >> 2将一幅图像转换为灰度图灰度图是指用灰度表示的图像,灰度是在白色和黑色之间分的若干个等级,其中最常用的是256级,也就是256级灰度图。
骨骼图像增强实验报告——数字图像处理第一次作业实验总体思路:原图像是人体骨骼核扫描图像,我们的目的是通过图像锐化突出骨骼的更多细节来增强图像。
由于图像灰度的动态范围很窄并且有很高的噪声内容,所以很难对其进行增强。
对此我们采取的策略是,首先用拉普拉斯法突出图像中的小细节,然后用梯度法突出其边。
平滑过的梯度图像将用于掩蔽拉普拉斯图像。
最后,我们将试图试用灰度变换来增强图像的灰度动态范围。
实验处理具体步骤:(图像可拉伸放大)1、此为图2,。
2、此为图3,(而这个时候看到图2的噪声水平,将图1和图2相加之后也必然会有很多的噪声。
拉普拉斯操作作为一种二阶微分算子,能很好的增强细节,但也产生更多的噪声。
而降低噪声的一种方法就是使用中值滤波器,但属于非线性滤波器的中值滤波器有可能改变图像的性质,所以不可取。
所以采取另一种方法,使用原图像梯度操作的平滑形式所形成的一个模板。
)3、此为图4,。
(梯度变换在灰度斜坡或台阶的平均相应要比拉普拉斯操作的更强烈,而对噪声和小细节的响应要比拉普拉斯操作的相应弱,而且可以通过均值滤波器对其进行平滑处理可以进一步降低,此时看图像中的边缘要比拉普拉斯图像(即图3)中的边缘要突出许多)4、此为图5,(图4,5要比图2亮表明具有重要边缘内容的梯度图像的值一般要比拉普拉斯图像的值高)5、此为图6,(此时看到强边缘的优势和可见噪声的相对减少,用平滑后的梯度图像来掩蔽拉普拉斯图像的目的达到了)6、此为图7,。
(与原图像相比,该图像中大部分细节的清晰度的增加都很明显,所以我们才需要综合多种的方法对图像进行处理,单独使用一种方法根本不可能达到这么好的效果,只需要看相对应的图像进行对比即可知道)7、此为图8,(此时需要增大锐化后图像的动态范围,即使有很多种这样效果的灰度变换函数,但是用幂率变换处理更好,直方图均衡和规定化的效果都不太好)(此时人体的轮廓的清晰度虽然还是不高,因为扩大的灰度动态范围的同时也增大了噪声,但是相比原图还是有相当大幅度的提高的,看下图原图与最终图像对比)实验心得与收获:在本次的图像处理编程中,我首次对图像处理的众多方法有了一个感性的理解,图像处理并不是简简单单的应用几个函数即可获得理想的效果,还需要分析得出要得到相应的效果就需要不同的方法,使是知道了对应的图像处理方法也是不足的,在图像处理的编程方法上也必须要熟悉,这一次的例子中因为总体上的方法都已经给出了,因此大部分的工作量就落在了如何选择对应的matlab函数了,所以这一次收获较大的就是在图像处理函数的原型跟使用细节的认识上,还有在例子的理解过程中,也将之前所学的图像处理方法复习熟悉了一遍,在这一个阶段的学习上收获到的帮助很大。
数字图像处理上机实验报告数字图像处理上机实验报告实验⼀: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.图像的傅⾥叶频谱。
基于c#图像灰度化、灰度反转、⼆值化的实现⽅法详解本篇⽂章是对c#图像灰度化、灰度反转、⼆值化的实现⽅法进⾏了详细的分析介绍,需要的朋友参考下图像灰度化:将彩⾊图像转化成为灰度图像的过程成为图像的灰度化处理。
彩⾊图像中的每个像素的颜⾊有R、G、B三个分量决定,⽽每个分量有255中值可取,这样⼀个像素点可以有1600 多万(255*255*255)的颜⾊的变化范围。
⽽灰度图像是R、G、B三个分量相同的⼀种特殊的彩⾊图像,其⼀个像素点的变化范围为255种,所以在数字图像处理种⼀般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少⼀些。
灰度图像的描述与彩⾊图像⼀样仍然反映了整幅图像的整体和局部的⾊度和亮度等级的分布和特征。
图像的灰度化处理可⽤两种⽅法来实现。
第⼀种⽅法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。
第⼆种⽅法是根据YUV的颜⾊空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜⾊空间的变化关系可建⽴亮度Y与R、G、B三个颜⾊分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。
///<summary>///图像灰度化///</summary>///<param name="bmp"></param>///<returns></returns>public static Bitmap ToGray(Bitmap bmp){for (int i = 0; i < bmp.Width; i++){for (int j = 0; j < bmp.Height; j++){//获取该点的像素的RGB的颜⾊Color color = bmp.GetPixel(i, j);//利⽤公式计算灰度值int gray = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);Color newColor = Color.FromArgb(gray, gray, gray);bmp.SetPixel(i, j, newColor);}}return bmp;}灰度反转:把每个像素点的R、G、B三个分量的值0的设为255,255的设为0。
图像灰度变换报告
一.实验目的
1.学会使用Matlab ;
2.学会用Matlab 软件对图像进行灰度变换,观察采用各种不同灰度变换发法对最终图像效果的影响;
二.实验内容
1.熟悉Matlab 中的一些常用处理函数
读取图像:img=imread('filename');
//支持TIF,JPEG,GIF,BMP,PNG 等文件格式。
显示图像:imshow(img,G);
//G 表示显示该图像的灰度级数,如省略则默认为256。
保存图片:imwrite(img,'filename');
//不支持GIF 格式,其他与imread 相同。
亮度变换:imadjust(img,[low_in,high_in],[low_out,high_out]);
//将low_in 至high_in 之间的值映射到low_out 至high_out 之
间,low_in 以下及high_in 以上归零。
绘制直方图:imhist(img);
直方图均衡化:histeq(img,newlevel);
//newlevel 表示输出图像指定的灰度级数。
2.获取实验用图像:rice.jpg. 使用imread 函数将图像读入Matlab 。
3 .产生灰度变换函数T1,使得:
0.3r
r < 0.35 s =
0.105 + 2.6333(r – 0.35) 0.35 ≤ r ≤ 0.65
1 + 0.3(r – 1) r > 0.65 用T1对原图像rice.jpg 进行处理,使用imwrite 函数保存处理后的新图像。
4.产生灰度变换函数T2,使得:
s = 5.用T2imwrite 保存处理后的新图像。
6.分别用 s = r 0.6; s = r 0.4; s = r 0.3 对kids.tiff 图像进行处理。
为简便起见,使用Matlab 中的imadjust 函数,最后用imwrite 保存处理后的新图像。
7.对circuit.jpg 图像实施反变换(Negative Transformation )。
s =1-r; 使
用imwrite保存处理后的新图像。
8.对rice.jpg图像实施灰度切片
当0.2 ≤ r ≤ 0.4时,将r置为0.6, 当r位于其他区间时, 保持其灰度与原图像一样。
使用imwrite保存处理后的新图像。
9.利用灰度变换对Picture.jpg做增强处理,突出图中的人物,改善整个图像过于灰暗的背景。
通过调节参数,观察变换后的图像与原始图像的变化,寻找出最佳的灰度变换结果。
写出所采用的拉伸表达式。
三.实验结果与分析
1.采用T1函数
变换前变换后
函数图像
该方法采用分段函数对图像进行处理,对灰度值大的进行拉伸,使灰度增大,而灰度值小的,也进行拉伸,使灰度值更小,从而产生如图所示的结果。
2.采用T2函数
变换前变换后
T2函数图
T2函数也比较好的完成了T1函数所达到的效果,但是T2函数更加平滑一点,对于图像的边界处理的较好一些。
3.
变换前图像变换前灰度图
采用s = r0.6变换采用s = r0.4变换采用s = r0.3变换
三种函数的对比
三种变换方式都对图像的每一个像素灰度作线性拉伸,有效地改善图像的视觉效果,但如果选择的拉伸尺度过大,会引起图像的失真,利用s = r0.4变换是比较适合的。
4.对灰度图进行反变换
变换前图像变换后图像
由图可以看出,该方法将灰度值进行翻转,是输出图像的灰度值随输入图像的灰度值增加而减小,如黑图像变成白图像。
这样可以增强灰暗背景下的白色细节的亮度。
5.对图像实施灰度切片
变换前图像变换后图像
函数图
经过灰度切片变化,图像中有很大一部分灰度统一为0.6,这样导致了很多不必要的失真,可以再进行调节,使范围更加的准确。
6. 利用灰度变换对Picture.jpg做增强处理,利用分段函数突出图中的人物,改善整个图像过于灰暗的背景。
通过调节参数,观察变换后的图像与原始图像的变化,寻找出最佳的灰度变换结果。
原图通过变换后
分段线性变换的公式如下:
1.1r r < 0.3
s = 0.11+ 1.6r 0.3 ≤ r ≤ 0.65
0.8r r > 0.65
原图直方图
均衡化后的直方图
函数图
由于图中的人的灰度与背景的灰度有部分是相似的,所以在改变背景灰度的同时,也会影响人物的灰度,而且这是难以避免的。
如果要解决这个问题,就得学会将人从图像中切割出来,然后再对背景进行处理,才能达到题中所要求的效果。
四.实验结论
通过上述六种方法的图像灰度变换法,了解掌握了一般图像处理所要达到的效果,明确了图像处理在生活中的作用。
但是以上几种方法采用的基本都是线性变换法,在实际应用中存在着很多的缺陷。
它只能处理一些黑白分明的一些图像,而对于一些颜色丰富或者图像比较复杂的图像时,往往于心不足,难以解决更高层次的问题,所以需要更多的图像处理方法来完善图像。