精华内容
下载资源
问答
  • 一维中值滤波函数,调用函数,输入滤波窗口值和初始一维滤波向量,输出滤波后的向量
  • 这是一个中值滤波函数的简单实用例程,环境为VS2017+OpenCV3.4.3.
  • MATLAB 自适应中值滤波函数adpmedian参考 冈萨雷斯 《数字图像处理》MATLAB版function f = adpmedian(g,Smax)if (Smax<=1)||(Smax/2==round(Smax/2))||(Smax~=round(Smax))error('Smax must be an odd integer &...

    MATLAB  自适应中值滤波函数adpmedian

    参考 冈萨雷斯 《数字图像处理》MATLAB版

    function f = adpmedian(g,Smax)

    if (Smax<=1)||(Smax/2==round(Smax/2))||(Smax~=round(Smax))

    error('Smax must be an odd integer >1.')

    end

    f=g;

    f(:)=0;

    alreadyProcessed=false(size(g));

    for k=3:2:Smax

    zmin=ordfilt2(g,1,ones(k,k),'symmetric');

    zmax=ordfilt2(g,k*k,ones(k,k),'symmetric');

    zmed=medfilt2(g,[k k],'symmetric');

    processUsingLevelB=(zmed>zmin)&(zmax>zmed)&...

    ~alreadyProcessed;

    zB=(g>zmin)&(zmax>g);

    outputZxy=processUsingLevelB & zB;

    outputZmed=processUsingLevelB&~zB;

    f(outputZxy)=g(outputZxy);

    f(outputZmed)=zmed(outputZmed);

    alreadyProcessed=alreadyProcessed | processUsingLevelB;

    if all(alreadyProcessed(:))

    break;

    end

    end

    f(~alreadyProcessed)=zmed(~alreadyProcessed);

    end

    展开全文
  • 中值滤波函数

    2012-05-10 11:39:01
    处理图像的瑕疵和污点 我感觉是效果比较好的,有简单的图像增强技术。
  • opencv中值滤波函数

    2015-09-13 19:21:52
    中值滤波是利用3*3矩阵,利用中值取代本像素值的一种滤波算法
  • MATLAB 自适应中值滤波函数adpmedian

    千次阅读 2019-04-01 17:44:09
    MATLAB 自适应中值滤波函数adpmedian 参考 冈萨雷斯 《数字图像处理》MATLAB版 function f = adpmedian(g,Smax) if (Smax<=1)||(Smax/2==round(Smax/2))||(Smax~=round(Smax)) error('Smax must be an odd...

    MATLAB  自适应中值滤波函数adpmedian

    参考 冈萨雷斯 《数字图像处理》MATLAB版

     

    function f = adpmedian(g,Smax)
    
    if (Smax<=1)||(Smax/2==round(Smax/2))||(Smax~=round(Smax))
        error('Smax must be an odd integer >1.')
    end
    f=g;
    f(:)=0;
    alreadyProcessed=false(size(g));
    
    for k=3:2:Smax
        zmin=ordfilt2(g,1,ones(k,k),'symmetric');
        zmax=ordfilt2(g,k*k,ones(k,k),'symmetric');
        zmed=medfilt2(g,[k k],'symmetric');
        
        processUsingLevelB=(zmed>zmin)&(zmax>zmed)&...
            ~alreadyProcessed;
        zB=(g>zmin)&(zmax>g);
        outputZxy=processUsingLevelB & zB;
        outputZmed=processUsingLevelB&~zB;
        f(outputZxy)=g(outputZxy);
        f(outputZmed)=zmed(outputZmed);
        
        alreadyProcessed=alreadyProcessed | processUsingLevelB;
        if all(alreadyProcessed(:))
            break;
        end
    end
    f(~alreadyProcessed)=zmed(~alreadyProcessed);
    
    end
    
    

     

    展开全文
  • 加权均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。可以对其进行改进,主要避开对景物边缘的平滑...函数:filter 参数:I: 原图 feature: 权重图 r: 滤波窗口大小
  • cv2.getTickCount()函数返回从参考点到这个函数被执行的时钟数。所以当你在一个函数执行... img1 = cv2.medianBlur(img1,i)中值滤波,第一个参数是待处理图像,第二个参数是孔径的尺寸,一个大于1的奇数。比如这里

    cv2.getTickCount()函数返回从参考点到这个函数被执行的时钟数。所以当你在一个函数执行前后都调用它的话,你就会的到这个函数的执行时间(时钟数)。
    cv2.getTickFrequency()返回时钟频率,或者说每秒的时钟数。
    img1 = cv2.medianBlur(img1,i)中值滤波,第一个参数是待处理图像,第二个参数是孔径的尺寸,一个大于1的奇数。比如这里是5,中值滤波器就会使用5×5的范围来计算。即对像素的中心值及其5×5邻域组成了一个数值集,对其进行处理计算,当前像素被其中值替换掉。
    中值滤波是对一个滑动窗口内的像素灰度值排序,用其中值代替窗口中心的像素的原来灰度值,它是一种非线性的图像平滑法,他对脉冲干扰级椒盐噪声的抑制效果很好,在一直随机噪声的同时能有效保护边缘少受模糊。

    本文中的循环只是为了计算时间,没有实际意义。
    
    import cv2  
    import numpy as np   
    
    img1 = cv2.imread('img_wlk.jpg')
    e1 = cv2.getTickCount()
    for  i in xrange(5,49,2):   
        img1 = cv2.medianBlur(img1,i)
    e2 = cv2.getTickCount()
    t = (e2-e1)/cv2.getTickFrequency()
    print t   
    cv2.imshow('hhh',img1)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    下边的程序是用来比较python中的优化开启与否,程序运行所需时间的差别,实验证明优化与否,对于程序的运行时间有很大差别

    import cv2  
    import numpy as np   
    
    cv2.setUseOptimized(False)
    #cv2.setUseOptimized(True)
    img1 = cv2.imread('img_wlk.jpg')
    e1 = cv2.getTickCount()
    for  i in xrange(5,49,2):
        img1 = cv2.medianBlur(img1,i)
    e2 = cv2.getTickCount()
    t = (e2-e1)/cv2.getTickFrequency()
    print t   
    #cv2.imshow('hhh',img1)
    #cv2.waitKey(0)
    #cv2.destroyAllWindows()
    a = cv2.useOptimized()
    print a   
    展开全文
  • 自定义中值滤波函数

    2018-12-01 14:38:03
    #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include&lt;ctime&...//求九个数的中值 uchar Median(uchar n1, uchar n2, uchar n3, uchar n4, uchar...
    #include "opencv2/imgproc.hpp"
    
    #include "opencv2/highgui.hpp"
    
    #include<ctime>
    
    using namespace cv;
    
    using namespace std;
    
    //求九个数的中值
    
    uchar Median(uchar n1, uchar n2, uchar n3, uchar n4, uchar n5,
    
    	uchar n6, uchar n7, uchar n8, uchar n9) {
    
    	uchar arr[9];
    
    	arr[0] = n1;
    
    	arr[1] = n2;
    
    	arr[2] = n3;
    
    	arr[3] = n4;
    
    	arr[4] = n5;
    
    	arr[5] = n6;
    
    	arr[6] = n7;
    
    	arr[7] = n8;
    
    	arr[8] = n9;
    
    	for (int gap = 9 / 2; gap > 0; gap /= 2)//希尔排序
    
    		for (int i = gap; i < 9; ++i)
    
    			for (int j = i - gap; j >= 0 && arr[j] > arr[j + gap]; j -= gap)
    
    				swap(arr[j], arr[j + gap]);
    
    	return arr[4];//返回中值
    
    }
    
    
    
    //图像椒盐化
    
    void salt(Mat &image, int num) {
    
    	if (!image.data) return;//防止传入空图
    
    	int i, j;
    
    	srand(time(NULL));
    
    	for (int x = 0; x < num; ++x) {
    
    		i = rand() % image.rows;
    
    		j = rand() % image.cols;
    
    		image.at<Vec3b>(i, j)[0] = 255;
    
    		image.at<Vec3b>(i, j)[1] = 255;
    
    		image.at<Vec3b>(i, j)[2] = 255;
    
    	}
    
    }
    
    
    
    //中值滤波函数
    void MedianFlitering(const Mat &src, Mat &dst) {
    	if (!src.data)return;
    	//创建目标矩阵
    	Mat _dst(src.size(), src.type());
    	for (int i = 0; i < src.rows; ++i)
    		for (int j = 0; j < src.cols; ++j) {
    			if ((i - 1) > 0 && (i + 1) < src.rows && (j - 1) > 0 && (j + 1) < src.cols) {
    				_dst.at<Vec3b>(i, j)[0] = Median(src.at<Vec3b>(i, j)[0], src.at<Vec3b>(i + 1, j + 1)[0],
    					src.at<Vec3b>(i + 1, j)[0], src.at<Vec3b>(i, j + 1)[0], src.at<Vec3b>(i + 1, j - 1)[0],
    					src.at<Vec3b>(i - 1, j + 1)[0], src.at<Vec3b>(i - 1, j)[0], src.at<Vec3b>(i, j - 1)[0],
    					src.at<Vec3b>(i - 1, j - 1)[0]);
    				_dst.at<Vec3b>(i, j)[1] = Median(src.at<Vec3b>(i, j)[1], src.at<Vec3b>(i + 1, j + 1)[1],
    					src.at<Vec3b>(i + 1, j)[1], src.at<Vec3b>(i, j + 1)[1], src.at<Vec3b>(i + 1, j - 1)[1],
    					src.at<Vec3b>(i - 1, j + 1)[1], src.at<Vec3b>(i - 1, j)[1], src.at<Vec3b>(i, j - 1)[1],
    					src.at<Vec3b>(i - 1, j - 1)[1]);
    				_dst.at<Vec3b>(i, j)[2] = Median(src.at<Vec3b>(i, j)[2], src.at<Vec3b>(i + 1, j + 1)[2],
    					src.at<Vec3b>(i + 1, j)[2], src.at<Vec3b>(i, j + 1)[2], src.at<Vec3b>(i + 1, j - 1)[2],
    					src.at<Vec3b>(i - 1, j + 1)[2], src.at<Vec3b>(i - 1, j)[2], src.at<Vec3b>(i, j - 1)[2],
    					src.at<Vec3b>(i - 1, j - 1)[2]);
    			}
    			else
    				_dst.at<Vec3b>(i, j) = src.at<Vec3b>(i, j);
    		}
    	_dst.copyTo(dst);//拷贝
    }
    
    
    
    
    
    void main() {
    
    	Mat image = imread("F:/2.png");
    
    	Mat Salt_Image;
    
    	image.copyTo(Salt_Image);
    
    	salt(Salt_Image, 3000);
    
    	Mat image3, image4;
    
    	MedianFlitering(Salt_Image, image3);
    
    	medianBlur(Salt_Image, image4, 3);
    
    	imshow("图片椒盐化处理后", Salt_Image);
    
    	imshow("自定义中值滤波处理后", image3);
    
    	imshow("openCV自带的中值滤波", image4);
    
    	waitKey();
    
    }
    

     

    展开全文
  • matlab 5*5十字型窗口中值滤波源代码
  • 图像空间滤波常用的函数:模板卷积处理函数,中值滤波函数/************************************************************************* * /函数名称: * Template() * /输入参数: * LPSTR lpDIBBits - 指向...
  • opencv中值滤波函数medianBlur

    千次阅读 2018-01-31 14:47:28
    Mat notchFinal; notchFinal.convertTo(notchFinal,CV_32FC1); medianBlur(notchFinal,notchFinal,11); 报错,参考链接:...medianBlur()函数的源码在…\opencv\so
  • /*******************************************************************...* 该函数用冒泡法对一维数组进行排序,并返回数组元素的中值。 ************************************************************************/
  • MATLAB常用的滤波函数比较:均值滤波和中值滤波 均值滤波中值滤波运行结果程序代码 均值滤波 均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,...
  • 自适应中值滤波器的另一个优点是平滑非脉冲噪声时,试图保留细节,这是传统中值滤波器所做不到的。正如前面几节中所讨论的所有滤波器一样,自适应中值滤波器也工作于矩形窗口区域Sxy内。然而...
  • 文章目录中值滤波介绍opencv自带的中值滤波函数简单算法实现中值滤波快速算法实现中值滤波 中值滤波介绍 中值滤波介绍 中值滤波定义:将????(????为奇数)个数据按其值????????进行从大到小或者从小到大排列后得到一...
  • 改进的中值滤波函数

    千次阅读 2012-08-10 12:51:18
    定义的函数getValue如下: int getValue(int a[9]) { int i,j,temp; int current; current=a[4]; for(i=0;i;i++) for(j=i+1;j;j++) /*注意循环的上下限*/ if(a[i]>a[j]) { temp=a[i]; a[i...
  • 为什么opencv里面的滤波函数cvSmooth,在选择着中值滤波时,效率很低呢?在程序里添加下面一条语句后,整个运行时间多了100多ms啊,求解释啊~~~~~~~ cvSmooth(Igray,Igray,CV_MEDIAN,5,5,0,0);
  • median _matlab 中值滤波函数

    千次阅读 2012-03-23 14:33:12
    >> median(A,1) //列的中值 ans =         2        7        5 >> median(A,2)//行的中值 ans =         4         3         7
  • Matlab常见的一维数据滤波函数 movmean:平均值滤波 movmedian:中值滤波 此外,同类函数还有获取规定窗口下的标准差与方差函数 movstd:求标准差 ; movvar:求方差 ; 其函数的记忆方法为mov+相应函数的名称 ...
  • 文章目录1 中值滤波1.1 原理1.2 中值滤波对图像的影响1.3 函数编写1.4 主文件1.5 效果展示2 高效的中值滤波算法2.1 原理2.2 函数编写3 带权重的中值滤波3.1 原理3.2 函数编写3.3 主文件3.4 效果展示 1 中值滤波 1.1 ...
  • Matlab 最大值滤波 中值滤波 最小值滤波 函数 ordfilt2 ...在MATLAB图像处理工具箱中提供了二维统计顺序滤波函数ordfilt2函数。二维统计顺序滤波是中值滤波的推广,对于给定的n个数值{al ,a2,...,
  • 自适应中值滤波MATLAB

    2018-09-07 09:42:00
    自适应中值滤波函数
  • B = HMF(A,N) 使用 NxN 框对矩阵 A 执行混合中值滤波。 混合中值过滤比基于 NxN 平方核的中值过滤器更好地保留边缘,因为来自不同空间方向的数据是分开排列的。 在 NxN 框中计算三个中值:MR 是水平和垂直 R 像素的...
  • 今天给大侠简单带来FPGA verilog HDL实现中值滤波,话不多说,上货。一、实现步骤:1、查看了中值滤波实现相关的网站和paper;2、按照某篇paper的设计思想进行编程实现;3、对各个模块进行语法检查、波形仿真、时序设...
  • 开始之前 在上一篇我们实现了读取噪声图像, 然后 进行三种形式的均值滤波得到结果, 由于我们自己写的均值滤波未作边缘处理, 所以效果有一定的下降,...首先介绍了中值滤波的原理, 给出其实现思路,并根据思路实现了 C+...
  • 中值滤波demo2.2. 双边滤波demo结构体参考 一. 线性滤波 1.1. 方框滤波 方框滤波是所有滤波器中最简单的一种滤波方式。每一个输出像素的是内核邻域像素值的平均值得到。 通用的滤波kernel如下: 这里是一个长宽...
  • 开始之前 在上一篇我们实现了读取噪声图像, 然后 进行三种形式的均值滤波得到结果, 由于我们自己写的均值滤波未作边缘处理, 所以效果有一定的下降,...首先介绍了中值滤波的原理, 给出其实现思路,并根据思路实现了 C+...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,144
精华内容 3,657
关键字:

中值滤波的函数