数字图像中值滤波操作的取证检测
- 格式:ppt
- 大小:1.69 MB
- 文档页数:26
数字图像处理基础实验指导书
信息工程学院
2013年4月16日
实验三中值滤波
一.实验目的
1.熟悉matlab图像处理工具箱及中值滤波函数的使用;
2.理解和掌握中值滤波的方法和应用;
二.实验设备
1、PC机一台;
2、软件MATLAB;
三.实验内容及步骤
1. 启动matlab
双击桌面matlab图标启动matlab环境;
2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab 自带的图像,如:cameraman图像;给图像添加不同的噪声;再调用相应的图像增强(中值滤波)函数,设置参数;最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果;
5.结束运行,退出;
四.实验参考程序及结果
在matlab环境中,程序首先读取图像,然后调用图像增强(中值滤波)函数,设置相关参数,再输出处理后的图像。
I = imread('cameraman.tif');
figure,imshow(I);
J1=imnoise(I,‘salt& pepper’,0.2);%添加椒盐噪声
J2= imnoise(I,‘gaussian’,0,0.005);%添加高斯噪声
J11=medfilt2(J1,[5,5]);
J22=medfilt2(J2,[5,5]);
figure,imshow(J11);
figure,imshow(J22);
五.实验报告要求
1、记录实验过程
2、给出完整结果(包括读入图像、加噪图像和滤波后的图像)。
数字图像处理之快速中值滤波算法快速中值滤波算法 : 在图像处理中,在进⾏如边缘检测这样的进⼀步处理之前,通常需要⾸先进⾏⼀定程度的降噪。
中值滤波是⼀种⾮线性数字滤波器技术,经常⽤于去除图像或者其它信号中的噪声。
这个设计思想就是检查输⼊信号中的采样并判断它是否代表了信号,使⽤奇数个采样组成的观察窗实现这项功能。
观察窗⼝中的数值进⾏排序,位于观察窗中间的中值作为输出。
然后,丢弃最早的值,取得新的采样,重复上⾯的计算过程。
中值滤波是图像处理中的⼀个常⽤步骤,它对于斑点噪声和椒盐噪声来说尤其有⽤。
保存边缘的特性使它在不希望出现边缘模糊的场合也很有⽤。
为了演⽰中值滤波器的⼯作过程,我们给下⾯的数组加上观察窗 3 ,重复边界的数值: x = [2 80 6 3] y[1] = Median[2 2 80] = 2 y[2] = Median[2 80 6] = Median[2 6 80] = 6 y[3] = Median[80 6 3] = Median[3 6 80] = 6 y[4] = Median[6 3 3] = Median[3 3 6] = 3 于是 y = [2 6 6 3] 其中 y 是 x 的中值滤波输出。
普通中值滤波算法伪代码: Input: image X of size m*n, kernel radius r. output: image Y as X. for i = r to m - r do for j = r to n - r do initialize list A[] for a = i-r to i+r for b = j-r to j+r add X(a, b) to A[] end end sort A[] then Y(i ,j) = A[A.size/2] end end 处理前: 处理后: 但是,上述算法在像素处理处的复杂度为O(r2). OpenCV实现代码:#include "cv.h"#include "highgui.h"#include <iostream>using namespace std;using namespace cv;int main(int argc, char* argv[]){Mat src = imread("beauty.jpg");Mat dst;//参数是按顺序写的//⾼斯滤波//src:输⼊图像//dst:输出图像//Size(5,5)模板⼤⼩,为奇数//x⽅向⽅差//Y⽅向⽅差GaussianBlur(src,dst,Size(5,5),0,0);imwrite("gauss.jpg",dst);//中值滤波//src:输⼊图像//dst::输出图像//模板宽度,为奇数medianBlur(src,dst,3);imwrite("med.jpg",dst);//均值滤波//src:输⼊图像//dst:输出图像//模板⼤⼩//Point(-1,-1):被平滑点位置,为负值取核中⼼blur(src,dst,Size(3,3),Point(-1,-1));imwrite("mean.jpg",dst);//双边滤波//src:输⼊图像//dst:输⼊图像//滤波模板半径//颜⾊空间标准差//坐标空间标准差bilateralFilter(src,dst,5,10.0,2.0);//这⾥滤波没什么效果,不明⽩imwrite("bil.jpg",dst);waitKey();return0;}View Code 快速中值滤波算法: O(r)复杂度的Huang算法:<> 这个代码的核⼼在于维护⼀个kernel直⽅图,可以实现快速的读取和删除扫描区域的像素值。
中值滤波在数字图像去噪中的应用
数字图像是由像素点构成的,每个像素点都有对应的灰度值。
然而,现实中的图像很
容易受到噪声的影响,这导致像素点的灰度值出现了误差。
因此,在数字图像处理过程中,需要对这些噪声进行去除,以保证图像的质量。
中值滤波是数字图像去噪中最常用的方法之一,其基本思想是用像素点周围的像素值
的中值代替该像素点的灰度值。
在该方法中,采用一个算子(滤波器)在图像上进行滑动,
将算子覆盖区域内的像素值按照从小到大的顺序排列,然后取其中间值作为当前像素的新值。
这样,中值滤波能够有效地去除某些类型的噪声,例如椒盐噪声等。
中值滤波的应用非常广泛,以下列举几个例子:
1. 医学图像去噪
医学图像中常常存在一些突发的噪声,这些噪声会对图像的分析造成困扰。
通过使用
中值滤波,在保持图像细节的同时,有效地去除噪声。
2. 工业图像分析
工业图像通常存在一些随机噪声,如灯光的反射等。
使用中值滤波可以去除这些噪声,从而更好地进行图像分析。
3. 视频增强
在电影和视频中,经常存在噪声干扰,这些噪声会影响观众的观感。
利用中值滤波进
行去噪,可以大大改善视频质量,提高观影体验。
4. 地震波形去噪
在地震波形分析中,由于地震信号的低频组成部分与噪声的高频成分往往是错过的,
因此中值滤波可以在保留地震信号基本信息的情况下,有效地去除高频噪声。
总之,中值滤波是数字图像去噪领域最简单、有效和经济的一种方法,它在许多领域
中都有着广泛的应用。
数字图像处理实验报告(邻域平均法和中值滤波法)数字图像处理实验报告班级:姓名:学号:日期:邻域平均法和中值滤波处理一、实验目的图像变换是数字图像处理中的一种综合变换,如直方图变换、几何变换等。
通过本实验,使得学生掌握两种变换的程序实现方法。
二、实验任务请设计程序,分别用邻域平均法,其模板为:和中值滤波法对testnoise 图像进行去噪处理(中值滤波的模板的大小也设为3X 3)。
三、实验环境本实验在Windows 平台上进行,对内存及cpu 主频无特别要求,使用VC或者MINGW (gcc)编译器均可。
四、设计思路介绍代码的框架结构、所用的数据结构、各个类的介绍(类的功能、类中方法的功能、类的成员变量的作用)、各方法间的关系写。
在此不进行赘述。
五、具体实现实现设计思路中定义的所有的数据类型,对每个操作给出实际算法。
对主程序和其他模块也都需要写出实际算法。
代码:<邻域平均法>(3*3)#include#include#include#include "hdr.h" /* ------ 定义结构指针--- */struct bmphdr *hdr;// 定义用于直方图变量unsigned char *bitmap,*count,*new_color; /* ---- main() 函数编--- */ int main(){ //定义整数i,j 用于函数循环时的,nr_pixels 为图像中像素的个数int i, j ,nr_pixels,nr_w,nr_h; // 定义两个文件指针分别用于提取原图的数据和生成直方图均衡化后的图像FILE *fp, *fpnew; // 定义主函数的参数包括:输入的位图文件名和输出的位图文件名,此处内容可以不要,在DOS下执行命令的时候再临时输入也可,为了方便演示,我这里直接把函数的参数确定了。
//argc=3; //argv[1]="test.bmp"; //argv[2]="testzf.bmp"; // 参数输入出错显示/* if (argc != 3) {printf("please input the name of input and out bitmap files\n");exit(1);}*/// 获取位图文件相关信息// hdr = get_header(argv[1]); hdr = get_header("testnoise.bmp");if (!hdr) exit(1); // 以二进制可读方式打开输入位图文件fp = fopen("testnoise.bmp", "rb");if (!fp) {printf("File open error!\n");exit(1);} // 文件指针指向数据区域fseek(fp, hdr->offset, SEEK_SET)计算位图像素的个数nr_pixels = hdr->width * hdr->height;nr_w = hdr->width;nr_h = hdr->height;bitmap = malloc(nr_pixels);new_color = malloc(nr_pixels);count = malloc((nr_w+2)*(+nr_h+2));//读取位图数据到bitmap 中fread(bitmap, nr_pixels, 1, fp);fclose(fp);// 因为图像边缘无法使用邻域平均,所以根据邻近颜色填补图像的周围一圈,存入count[] 数组中// 中心图像存入count[] for(i=nr_w+3;i<(nr_w+2)*(+nr_h+2)-nr_w-3;i++) { j=i/(nr_w+2);if(i%(nr_w+2)!=0&&(i+1)%(nr_w+2)!=0) count[i]=bitmap[i-nr_w-1-2*j]; } // 填补第一排for(i=1;i} // 填补最后一排for(i=1;i} // 填补左边一排for(i=0;i} // 填补右边一排for(i=0;i<nr_h+3;i++)< p="">{ count[(i+1)*(nr_w+2)-1]=count[(i+1)*(nr_w+2)-2];}// 邻域平均3*3for(j=nr_w+3,i=0;j<(nr_w+2)*(+nr_h+2)-nr_w-3;j++) {if(j%(nr_w+2)!=0&&(j+1)%(nr_w+2)!=0)new_color[i]=(count[j]+count[j-1]+count[j+1]+count[j-nr_w-2]+count[j-1-nr_w-2]+count[j+1-nr_w-2]+count[j+nr_w+2]+count[j-1+nr_w+2]+count[j+1+nr_w+2])/9,i++; } //结果存入bitmap[] 中for (i = 0; i < nr_pixels; i++;bitmap[i]=new_color[i]; // 打开一个以输出文件名命名的文件,设为可写的二进制形式fpnew = fopen("test_lynoise.bmp", "wb+");// 由于位图文件的头部信息并没有因直方图均衡化而改变,因此输出图像的头部信息从原位图文件中拷贝即可:fwrite(hdr->signature, 2, 1, fpnew); fwrite(&hdr->size, 4, 1, fpnew);fwrite(hdr->reserved, 4, 1, fpnew); fwrite(&hdr->offset, 4, 1, fpnew); fwrite(&hdr->hdr_size, 4, 1, fpnew); fwrite(&hdr->width, 4, 1, fpnew); fwrite(&hdr->height, 4, 1, fpnew); fwrite(&hdr->nr_planes, 2, 1, fpnew); fwrite(&hdr->bits_per_pixel, 2, 1, fpnew); fwrite(&hdr->compress_type, 4, 1, fpnew); fwrite(&hdr->data_size, 4, 1, fpnew); fwrite(&hdr->resol_hori, 4, 1, fpnew); fwrite(&hdr->resol_vert, 4, 1, fpnew);fwrite(&hdr->nr_colors, 4, 1, fpnew); fwrite(&hdr->important_color, 4, 1, fpnew); if (hdr->offset > 54) fwrite(hdr->info, (hdr->offset - 54), 1, fpnew); // 直方图均衡化的数据(bitmap) 赋值fwrite(bitmap, nr_pixels, 1, fpnew);// 关闭fclose(fpnew);// 释放内存(优化程序必需) free(hdr);free(bitmap);</nr_h+3;i++)<>。
MATLAB中数字图像中值滤波的实现步骤MATLAB中数字图像中值滤波的实现步骤数字图像中值滤波是一种常用的图像处理技术,它可以有效地去除图像中的噪声。
在MATLAB中,实现数字图像中值滤波的步骤如下:1. 导入图像:首先,我们需要导入待处理的图像。
在MATLAB中可以使用imread函数来读取图像文件,并将其存储为一个矩阵。
2. 确定滤波窗口大小:中值滤波是一种局部处理方法,它通过对每个像素周围的邻域进行排序,并选择中间值作为滤波后的像素值。
因此,我们需要确定滤波窗口的大小。
通常情况下,窗口大小选择为奇数,以确保有一个中心像素。
3. 处理边界像素:由于滤波窗口通常是一个正方形或矩形,所以在图像的边界处可能会出现边界像素无法完全包含在滤波窗口内的情况。
为了解决这个问题,一种常见的做法是通过在图像的边界处填充一圈像素值来扩展图像。
在MATLAB中,可以使用padarray函数来实现边界像素的填充。
4. 遍历图像像素:对于图像中的每个像素,我们需要将它的邻域像素提取出来,并进行排序。
在MATLAB中,可以使用imcrop函数来提取邻域像素,并使用sort函数对像素进行排序。
5. 计算中值:排序后,我们可以直接选择排序后数组的中间值作为滤波后的像素值。
如果邻域大小为奇数,则中间值正好是排序后数组的中间元素;如果邻域大小为偶数,则可以选择中间两个元素的平均值作为中值。
在MATLAB中,可以使用median函数来计算中值。
6. 更新像素值:将计算得到的中值作为滤波后的像素值,并更新到图像矩阵中。
7. 输出结果:最后,我们可以使用imwrite函数将处理后的图像保存到文件中,或使用imshow函数显示处理结果。
以上就是MATLAB中实现数字图像中值滤波的步骤。
通过对图像进行中值滤波处理,可以有效地去除噪声,提高图像质量。
数字图像处理中的图像滤波研究一、引言图像滤波是数字图像处理中的重要技术之一,用于改善图像的质量和增强图像的特定特征。
图像滤波可以去除图像中的噪声和不必要的细节,从而提高图像的视觉效果和信息传输性能。
本文将深入探讨数字图像处理中的图像滤波研究。
二、图像滤波的基本原理图像滤波是通过对图像进行局部加权平均或差值运算,改变图像的灰度分布和空间响应,从而实现图像的模糊、锐化、增强等效果。
图像滤波主要包括线性滤波和非线性滤波两种方法。
2.1 线性滤波线性滤波是指通过卷积操作实现的滤波方法。
常见的线性滤波器包括均值滤波器、高斯滤波器和中值滤波器等。
均值滤波器通过对图像区域内像素值进行平均,从而实现图像的模糊效果;高斯滤波器则通过对图像区域内像素值进行加权平均,从而实现图像的模糊和去噪效果;中值滤波器则通过选取区域内像素值的中值,从而实现图像的去噪效果。
2.2 非线性滤波非线性滤波是指通过对图像像素值进行排序和比较,选择滤波器的操作方法。
常见的非线性滤波器包括基于排序统计的滤波器、自适应滤波器和边缘保留滤波器等。
基于排序统计的滤波器通过对图像像素值进行排序,并选择特定位置的像素值进行滤波,从而实现图像的锐化和边缘增强效果;自适应滤波器则通过根据图像局部统计特性改变滤波器参数,从而实现图像的自适应处理;边缘保留滤波器则通过保留图像边缘信息的方式进行滤波,从而实现图像的去噪效果。
三、图像滤波的应用图像滤波在各个领域都有广泛的应用。
3.1 图像去噪图像去噪是图像滤波的一大应用领域。
通过应用不同的滤波器和滤波方法,可以去除图像中的椒盐噪声、高斯噪声等不同类型的噪声,提高图像的质量和清晰度。
3.2 图像增强图像增强是通过滤波方法改善图像的对比度、边缘和细节,从而使图像更加鲜明和清晰。
常见的图像增强方法包括直方图均衡化、区域增强和多尺度增强等。
3.3 图像特征提取图像滤波还可以应用于图像特征提取。
通过选择合适的滤波器和滤波算法,可以有效地提取图像中的边缘、纹理和角点等特征,为后续图像处理和分析提供基础。
中值滤波是一种数字信号处理中常用的非线性滤波方法,用于去除信号中的噪声或异常值。
中值滤波的原理是取窗口中所有像素值的中间值作为该位置的新值。
中值滤波的步骤如下:
1. **定义窗口大小:** 选择一个合适大小的窗口,通常是一个正方形或矩形的邻域。
窗口的大小取决于噪声的性质和图像的特点。
2. **将窗口放置在图像的每个像素位置上:** 对于每个位置,将窗口覆盖的像素值按大小进行排序。
3. **选择中值作为新的像素值:** 将排序后的像素值中间的值(中值)赋给当前位置的像素。
中值滤波的优点包括对椒盐噪声等离群点较为鲁棒,不容易受到极端值的影响。
然而,它的缺点是对图像边缘细节的保护较差,可能导致图像模糊。
中值滤波在图像处理、信号处理和其他领域中被广泛应用,特别是在需要去除噪声的情况下。
中值滤波:一.实验原理中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。
方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。
二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。
W为二维模板,通常为3*3,5*5区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。
二.实验内容用大小为5×5的中值滤波器对图1进行处理,在不同窗口中显示原图像及各处理结果图像。
图1—待处理图像三.实验程序%对边缘进行拓展再进行5*5滤波clearI=imread('D:\lvbo.jpg'); %读入原图像I=double(I);figure()subplot(121); %画出原图像imshow(I,[]);title('before');[M,N]=size(I);new=ones(M+4,N+4); %定义对原图像进行边沿拓展之后的新图像new(3:(M+2),3:(N+2))=I(1:M,1:N);%3到M+2行,3到N+2列与原图像相等new(1,3:N+2)=I(2,:); %行对称拓展new(2,3:N+2)=I(1,:);new(M+3,3:N+2)=I(M,:);new(M+4,3:N+2)=I(M-1,:);new(:,1)=new(:,4); %列对称拓展new(:,2)=new(:,3);new(:,N+3)=new(:,N+2);new(:,N+4)=new(:,N+1);for i=1:M; %1到M 行,1到N 列用5*5模板循环计算中值并赋值给中间数 for j=1:N; %即进行中值滤波A=new(i:i+4,j:j+4);A=A(:);B=sort(A,'ascend');C=median(B);new(i+2,j+2)=C;end ;end ;D=new(3:M+2,3:N+2);subplot(122);imshow(D,[]);title('after'); %显示均值滤波后的图像四.结果分析经过中值滤波前后图像如图2所示,由图可以看出,中值滤波后,去除了椒盐噪声,且处理之后的图像相比较于均值滤波处理之后的图像清晰,所以中值滤波效果优于均值滤波。
中值滤波处理中值滤波处理——一种常见的数字图像处理技术数字图像处理是计算机视觉领域中重要的一部分,其目的是对数字图像进行处理和改进,以便更好地满足人类的需求。
其中,中值滤波是常见的一种数字图像处理技术。
中值滤波是一种非线性滤波方法,其基本思想是取一个滤波模板中的所有像素值,按照大小排序后取中间值作为当前像素的新值,以此来消除噪声、平滑图像等。
中值滤波处理技术通常在数字图像处理中广泛应用,特别是在噪声较大的情况下,能够对图像进行更好的改进和处理。
从算法原理上来看,中值滤波处理主要分为以下几个步骤:首先,需要设置窗口大小,即需要对滤波的区域进行设置,一般设置为3x3、5x5、7x7等区域。
然后,需要将当前像素点与周围窗口中的所有像素值进行排序,以得到其中位数。
最后,将该中位数赋值给当前像素点,从而得到处理后的图像。
需要注意的是,在处理过程中,窗口的大小设置和像素排序都会对结果产生影响,因此需要根据实际需求进行合理的选择。
中值滤波处理技术具有多种优势。
首先,由于其非线性特性,能够更好地处理非正态分布的噪声。
其次,由于中值滤波是一种非参数方法,对数据的分布情况不作任何适应性假设,因此更加适用于各种类型的数字图像。
此外,相对于其他平滑滤波技术,中值滤波处理技术在细节保持方面更加出色,能够更好地保留图像细节,提高图像的清晰度和质量。
尽管中值滤波处理技术具有诸多优势,但也存在着一些缺点。
其中,最明显的一点是,在处理过程中会导致图像细节信息的损失,特别是在处理较大噪声的情况下。
此外,在处理过程中,由于要进行像素值的排序,因此处理时间较长,对于大规模数字图像处理较困难。
综上所述,中值滤波处理技术是数字图像处理中一种常见而又重要的处理技术。
虽然存在一些缺点,但其非线性特性和较好的细节保持能力使其在噪声较大、需要保留图像细节等方面有着广泛的应用。
因此,中值滤波处理技术在数字图像处理技术领域中有着重要的地位和发展前景。
图像处理中的数字图像滤波算法图像处理是计算机科学领域中的一个重要研究方向,它涉及到对图像进行各种操作和处理,以提取有用的信息。
其中,数字图像滤波算法是图像处理中的一项基本技术,它可以改善图像的质量、增强图像的细节,并去除图像中的噪声。
本文将探讨数字图像滤波算法的原理和应用。
一、数字图像滤波算法的原理数字图像滤波算法是基于信号处理理论的一种技术,它通过对图像进行一系列的数学运算,改变图像中像素的值,从而实现对图像的增强和去噪。
常见的数字图像滤波算法包括均值滤波、中值滤波、高斯滤波等。
1. 均值滤波均值滤波是一种简单而常用的滤波算法,它通过计算像素周围邻域内像素的平均值来代替当前像素的值。
均值滤波可以有效地去除图像中的高频噪声,但会导致图像的细节丢失。
2. 中值滤波中值滤波是一种非线性滤波算法,它通过计算像素周围邻域内像素的中值来代替当前像素的值。
中值滤波可以有效地去除图像中的椒盐噪声和脉冲噪声,但对于连续的噪声效果不明显。
3. 高斯滤波高斯滤波是一种基于高斯函数的线性滤波算法,它通过计算像素周围邻域内像素的加权平均值来代替当前像素的值。
高斯滤波可以有效地平滑图像,并保持图像的细节信息。
二、数字图像滤波算法的应用数字图像滤波算法在图像处理中有着广泛的应用,下面将介绍几个常见的应用场景。
1. 图像去噪图像中的噪声会降低图像的质量和清晰度,使得图像难以被正确解读。
数字图像滤波算法可以通过去除图像中的噪声,提高图像的质量和清晰度。
其中,中值滤波在去除椒盐噪声和脉冲噪声方面效果较好,而高斯滤波则适用于平滑图像并去除高频噪声。
2. 图像增强在某些情况下,图像的细节可能因为光照不均匀、噪声等原因而不够清晰。
数字图像滤波算法可以通过增强图像的细节,使得图像更加清晰和易于观察。
其中,锐化滤波是一种常用的图像增强算法,它通过增加图像的对比度和边缘来提高图像的清晰度。
3. 图像边缘检测图像边缘是图像中灰度变化较大的区域,对于图像的分割和特征提取具有重要意义。