2018-11-02 09:15:38 zhuimengshaonian66 阅读数 3002

滤波算法: 
这里所讲的算法都是针对图像空间的滤波算法,其中模板,可以理解为图像形态学中的结构元素,是用来选取图像中的那些像素点被用来操作的。空间滤波根据其功能划分为平滑滤波和锐化滤波。平滑滤波:能减弱或者消除图像中高频率分量,但不影响低频率分量,在实际应用中可用来消除噪声。锐化滤波:与平滑滤波相反,能减弱或者消除图像中低频率分量,但不影响高频率分量,可使图像反差增加,边缘明显。实际应用可用于增强被模糊的细节或者目标的边缘。

空间增强滤波技术分类: 


1、线性平滑滤波

(1)方框滤波:用一个像素的领域像素值之和作为滤波结果,邻域即模板所覆盖的图像区域,此时模板的所有系数都为1. 


(2)邻域平均:是特殊大方框滤波,用一个像素的领域平均像素值作为滤波结果,即a为第一种情。 


其中N(x,y)为模板岁覆盖的图像的区域,n为模板的尺寸。

(3)加权平均:此时的模板系数不是1,而是具体的系数。一般认为距离模板中心的像素应对滤波结果有较大的贡献,所以可将接近模板中心的系数取得比模板周边的系数。 


(4)高斯平均:是一种特殊的加权平均,只不过模板中的系数由高斯分布来确定的。

2、线性锐化滤波

(1)拉普拉斯算子 
拉普拉斯算子是一种各向同性的二阶微分算子,利用微分系数来确定模板系数,然后再与图像进行卷积运算,从而实现锐化滤波。

根据拉普拉斯定义: 
 
两个分别沿X和Y方向的二阶偏导均可借助差分计算: 
 
合并为: 


当模板为4-邻域时 当模板为8-邻域时

  

  以上两种模板的系数之和为0,这是为了使经过模板运算的图像的均值不变。拉普拉斯算子增强了图像中的灰度不连续区域,而减弱了图像中灰度值缓慢变化区域对比度,将这样的结果叠加到原始图像中,就可以得到锐化后的额图像。

(2)高频提升滤波 
图像的锐化效果可以通过叠加图像的微分结果得到,也可以通过减除图像积分结果得到。 
设原始图像为f(x,y),平滑后的图像为g(x,y):

非锐化掩模:h(x,y) = f(x,y)-g(x,y)

锐化图像:{ f(x,y)- g(x,y) } + f(x,y)

高频提升滤波:把图形乘以一个放大系数A,再减去平滑图像

 
可转化为: 
 
当A=1时,为非锐化掩模; 
当A=2时,为非锐化掩模化。

3、非线性平滑滤波

(1)中值滤波:对模板下对应的像素值进行升序排序,选取中间值作为结果。 
 
(2)与中值滤波类似的,还有最大值、最小值、中点滤波 
以上四种滤波也称之为百分比滤波,百分比滤波基于模板的排序来工作,又叫作序统计滤波。

参考:https://blog.csdn.net/swj110119/article/details/51321109 

 

均值滤波及中值滤波的区别

均值滤波和和中值滤波都可以起到平滑图像,虑去噪声的功能。均值滤波采用线性的方法,平均整个窗口范围内的像素值,均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。均值滤波对高斯噪声表现较好,对椒盐噪声表现较差。中值滤波采用非线性的方法,它在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘,选择适当的点来替代污染点的值,所以处理效果好,对椒盐噪声表现较好,对高斯噪声表现较差。

填充问题

在对图像应用滤波器进行过滤时,边界问题是一个需要处理的问题。一般来说,有3种处理的方法。

1. 不做边界处理
不对图像的边界作任何处理,在对图像进行滤波时,滤波器没有作用到图像的四周,因此图像的四周没有发生改变。

2. 填充0
对图像的边界做扩展,在扩展边界中填充0,对于边长为2k+1的方形滤波器,扩展的边界大小为k,若原来的图像为[m, n],则扩展后图像变为[m+2k, n+2k]。进行滤波之后,图像会出现一条黑色的边框。

3. 填充最近像素值
扩展与 填充0 的扩展类似,只不过填充0的扩展是在扩展部分填充0,而这个方法是填充距离最近的像素的值。

matlab代码实现

1.  均值滤波函数如下
该函数为spacelFilter,输入为需要进行滤波的图像(L = 256,像素值为0-255的灰度图像),方形滤波器(大小为2k+1,值类型为uint8),输出为经过滤波器滤波之后的图像。该函数滤波采用填充最近像素值的方法,结果图像不会出现黑边。

function [image_out] = spacelFilter(image_in, filter)
% (线性)均值滤波函数
% 输入为需要进行空间滤波的灰度图像,线性方形滤波器
% 输出为经过滤波之后的图像
% 图像边缘的填充为最近的像素值,目的是消除填充0时会出现的黑框
% 滤波器的大小为 n * n, n = 2 * k + 1, k为整数
% 输入图像大小为 m * n, 灰度图像,像素值范围为0-255,L = 256
[m, n] = size(image_in);
[mf, nf] = size(filter);
k = (mf - 1) / 2;
image2 = zeros(m+2*k, n+2*k, 'double');
image_out = zeros(m, n, 'uint8');
coeff = sum(filter(:));
% 填充部分
% 内部直接复制
for i = 1+k : m+k
    for j = 1+k : n+k
        image2(i, j) = image_in(i-k, j-k);
    end
end
% 填充上下边缘
for i = 1 : k
    for j = 1 : n
        image2(i, j+k) = image_in(1, j);
        image2(m+k+i, j+k) = image_in(m, j);
    end
end
% 填充左右边缘
for i = 1 : m
    for j = 1 : k
        image2(i+k, j) = image_in(i, 1);
        image2(i+k, n+k+j) = image_in(i, n);
    end
end
% 填充四个角
for i = 1 : k
    for j = 1 : k
        image2(i, j) = image_in(1, 1); %填充左上角
        image2(i, j+n+k) = image_in(1, n); %填充右上角
        image2(i+n+k, j) = image_in(m, 1); %填充左下角
        image2(i+n+k, j+n+k) = image_in(m, n); %填充右下角
    end
end
 
% 滤波部分
for i = 1+k : m+k
    for j = 1+k : n+k
        sub_image = image2(i-k:i+k, j-k:j+k);
        temp1 = double(filter') .* double(sub_image);
        temp2 = sum(temp1(:)) / coeff;
        image_out(i-k, j-k) = uint8(temp2);
    end
end
 
end
2. 中值滤波器
实现与均值滤波器类似,只不过在滤波部分的实现有所不同。
% 滤波部分
for i = 1+k : m+k
    for j = 1+k : n+k
        sub_image = image2(i-k:i+k, j-k:j+k);
        temp = median(sub_image(:));
        image_out(i-k, j-k) = uint8(temp);
    end
end
3.  测试代码如下
为了方便,我在spacelFilter函数中增加了中值滤波部分,增加了一个返回值,这样spacelFilter函数的返回值为[image1,image2],image1为均值滤波图像,image2为中值滤波图像。

close all;
clear all;
clc;
 
image = imread('2.tif');
[m, n] = size(image);
%模板大小
k = 3;
myFilter = zeros(k, k, 'uint8');
 
for i = 1 : k
    for j = 1 : k
        myFilter(i, j) = 1;
    end
end
[image2, image3] = spacelFilter(image, myFilter);
image4 = medfilt2(image, [3 3]);
figure;
subplot(2, 2, 1), imshow(image), title('原图像');
subplot(2, 2, 2), imshow(image2), title('3*3均值滤波图像');
subplot(2, 2, 3), imshow(image3), title('3*3中值滤波图像');
subplot(2, 2, 4), imshow(image4), title('matlab自带的中值滤波图像');
4. 代码运行结果如下(测试图像为被椒盐噪声污染的图像):


原文:https://blog.csdn.net/cjsh_123456/article/details/79261271 
 

2018-08-09 16:57:03 qq_29496709 阅读数 375

之前我们一直在学习EDIUS的视频滤镜,相信很多小伙伴都掌握地不错了吧!接下来我们就来看一下EDIUS的音频滤镜吧!今天小编先给大家展示一下EDIUS音频滤镜中低通滤波与高通滤波的使用。

首先我们先导入一段音频素材到素材库中并拖拽到音频轨道。 然后打开特效面板,点击“音频滤镜”,我们在右面窗口中就可以看到一些音频特效。可见下图:

处理图片素材

我们首先来看一下音频滤镜中的“低通滤波”。我们按住鼠标左键把它拖拽到音频素材上,然后播放素材听一下效果,我们会明显地发现素材的声音变的低沉了。接着,我们打开信息面板中“低通滤波”的设置面板,在这里我们可以对声音通过的范围做设置。下图是低通滤波的设置对话框:

处理图片素材

在这里我们可以通过滑动滑块的位置来控制声音最高可通过的值,高于这个值以外的任何声音都会被屏蔽掉,只能通过这个值之前的低音部分声音。

和这个滤镜相对的声音特效是“高通滤波”。故名思议,我们把它加在素材上,素材的声音就会变大。操作同上述的“低通滤波”一样,现在我们也来看一下它的设置对话框吧!

处理图片素材

它和低通滤波正好相反,我们可以滑动滑块来设置它通过的最低声音频率。低于这个值的声音将会被屏蔽掉,高于它的声音将会被播放出来哦!

最后,我们来总结一下低通滤波和高通滤波的作用。它们的作用实际就是来调整音频声音的大小的。讲到这里我们有关这两个音频特效的知识就讲完了哦,下面小编也会逐一地位大家讲解其他的音频滤镜特点和作用的,有兴趣的小伙伴,可以来EDIUS中文网站下载EDIUS模板学习哦!

转自:http://ediuschina.com/xinshou/yinpin-lvbo.html

2019-04-29 20:26:39 qq_41391174 阅读数 411

二、平滑滤波器

1、平滑滤波器的主要用途

1、对大图像处理前,删去无用的细小细节
2、连接中断的线段和曲线
3、降低噪音
4、平滑处理,回复过分锐化的图像
5、图像创艺(阴影、软边、朦胧效果)

2、基本低通滤波器

1、滤波器模板系数的设计

根据空域中低通冲激响应函数的图像来设计模板的系数。

2、均值滤波器

待处理的像素点的值,等于其周围相邻像素的全体像素的平均值。
在这里插入图片描述

2、加权平均滤波器

待处理像素点的值,等于其周围相邻像素的全体像素的加权平均值。
在这里插入图片描述
通过求平均值,解决超出灰度范围问题

2009-12-25 14:23:00 weixin_30706691 阅读数 5
空间的卷积相当于频域的乘积。 可以用来提取边缘,如利用sobel 拉普拉斯算子等,这种相当于频域中的高通滤波器。
还有可以滤除噪声,如中值滤波,这种相当于频域中低通滤波器。

转载于:https://www.cnblogs.com/xcm11/archive/2009/12/25/1620341.html

2010-09-23 17:38:00 suwei19870312 阅读数 6536

在内存管理中存在这两类算法:一类是内存分配算法,一类是页面置换算法

 

内存分配算法:是指怎么从连续的逻辑地址空间上分配内存地址给进程。

常见内存分配算法及优缺点如下:
  (1)首次适应算法。使用该算法进行内存分配时,从空闲分区链首开始查找,直至找到一个能满足其大小要求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中。
   该算法倾向于使用内存中低地址部分的空闲分区,在高地址部分的空闲分区很少被利用,从而保留了高地址部分的大空闲区。显然为以后到达的大作业分配大的内 存空间创造了条件。缺点在于低址部分不断被划分,留下许多难以利用、很小的空闲区,而每次查找又都从低址部分开始,这无疑会增加查找的开销。
   (2)循环首次适应算法。该算法是由首次适应算法演变而成的。在为进程分配内存空间时,不再每次从链首开始查找,而是从上次找到的空闲分区开始查找,直至 找到一个能满足要求的空闲分区,并从中划出一块来分给作业。该算法能使空闲中的内存分区分布得更加均匀,但将会缺乏大的空闲分区。
  (3)最佳适应算法。该算法总是把既能满足要求,又是最小的空闲分区分配给作业。
   为了加速查找,该算法要求将所有的空闲区按其大小排序后,以递增顺序形成一个空白链。这样每次找到的第一个满足要求的空闲区,必然是最优的。孤立地看, 该算法似乎是最优的,但事实上并不一定。因为每次分配后剩余的空间一定是最小的,在存储器中将留下许多难以利用的小空闲区。同时每次分配后必须重新排序, 这也带来了一定的开销。
  (4)最差适应算法。最差适应算法中,该算法按大小递减的顺序形成空闲区链,分配时直接从空闲区链的第一个空闲分区中 分配(不能满足需要则不分配)。很显然,如果第一个空闲分区不能满足,那么再没有空闲分区能满足需要。这种分配方法初看起来不太合理,但它也有很强的直观 吸引力:在大空闲区中放入程序后,剩下的空闲区常常也很大,于是还能装下一个较大的新程序。
  最坏适应算法与最佳适应算法的排序正好相反,它的队列指针总是指向最大的空闲区,在进行分配时,总是从最大的空闲区开始查寻。
  该算法克服了最佳适应算法留下的许多小的碎片的不足,但保留大的空闲区的可能性减小了,而且空闲区回收也和最佳适应算法一样复杂。

 

 

页面置换算法:是指线性地址转化为物理地址的过程中的算法,由于实际物理内存有限,一个进程的所有逻辑页page并不是都会被映射到实际的物理frame上,而是分配一定数量的物理frame,之后通过一定的页面置换算法把需要调入内存的逻辑页page调入内存。

评价一个算法的优劣,可通过在一个特定的存储访问序列页面走向)上运行它,并计算缺页数量来实现。

1 先入先出法(FIFO)

最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内存中的页。被置换页面总是在队列头上进行。当一个页面被放入内存时,就把它插在队尾上。
这种算法只是在按线性顺序访问地址空间时才是理想的,否则效率不高。因为那些常被访问的页,往往在主存中也停留得最久,结果它们因变“老”而不得不被置换出去。
FIFO的另一个缺点是,它有一种异常现象,即在增加存储块的情况下,反而使缺页中断率增加了。当然,导致这种异常现象的页面走向实际上是很少见的。

2 最优置换算法(OPT)

最优置换(Optimal Replacement)是在理论上提出的一种算法。其实质是:当调入新的一页而必须预先置换某个老页时,所选择的老页应是将来不再被使用,或者是在最远的将来才被访问。采用这种页面置换算法,保证有最少的缺页率。
但是最优页面置换算法的实现是困难的,因为它需要人们预先就知道一个进程整个运行过程中页面走向的全部情况。不过,这个算法可用来衡量(如通过模拟实验分析或理论分析)其他算法的优劣

3 最久未使用算法(LRU)

FIFO算法和OPT算法之间的主要差别是,FIFO算法利用页面进入内存后的时间长短作为置换依据,而OPT算法的依据是将来使用页面的时间。如果以最近的过去作为不久将来的近似,那么就可以把过去最长一段时间里不曾被使用的页面置换掉。它的实质是,当需要置换一页时,选择在最近一段时间里最久没有使用过的页面予以置换。这种算法就称为最久未使用算法(Least Recently Used,LRU)。
LRU算法是与每个页面最后使用的时间有关的。当必须置换一个页面时,LRU算法选择过去一段时间里最久未被使用的页面。
LRU算法是经常采用的页面置换算法,并被认为是相当好的,但是存在如何实现它的问题。LRU算法需要实际硬件的支持。其问题是怎么确定最后使用时间的顺序,对此有两种可行的办法:
(1)计数器。最简单的情况是使每个页表项对应一个使用时间字段,并给CPU增加一个逻辑时钟或计数器。每次存储访问,该时钟都加1。每当访问一个页面时,时钟寄存器的内容就被复制到相应页表项的使用时间字段中。这样我们就可以始终保留着每个页面最后访问的“时间”。在置换页面时,选择该时间值最小的页面。这样做,不仅要查页表,而且当页表改变时(因CPU调度)要维护这个页表中的时间,还要考虑到时钟值溢出的问题。
(2)栈。用一个栈保留页号。每当访问一个页面时,就把它从栈中取出放在栈顶上。这样一来,栈顶总是放有目前使用最多的页,而栈底放着目前最少使用的页。由于要从栈的中间移走一项,所以要用具有头尾指针的双向链连起来。在最坏的情况下,移走一页并把它放在栈顶上需要改动6个指针。每次修改都要有开销,但需要置换哪个页面却可直接得到,用不着查找,因为尾指针指向栈底,其中有被置换页。
因实现LRU算法必须有大量硬件支持,还需要一定的软件开销。所以实际实现的都是一种简单有效的LRU近似算法。
一种LRU近似算法最近未使用算法(Not Recently Used,NUR)。它在存储分块表的每一表项中增加一个引用位,操作系统定期地将它们置为0。当某一页被访问时,由硬件将该位置1。过一段时间后,通过检查这些位可以确定哪些页使用过,哪些页自上次置0后还未使用过。就可把该位是0的页淘汰出去,因为在最近一段时间里它未被访问过。

4 第二次机会算法(SCR)

第二次机会算法的基本思想是与FIFO相同的,但是有所改进,避免把经常使用的页面置换出去。当选择置换页面时,检查它的访问位。如果是0,就淘汰这页;如果访问位是1,就给它第二次机会,并选择下一个FIFO页面。当一个页面得到第二次机会时,它的访问位就清为0,它的到达时间就置为当前时间。如果该页在此期间被访问过,则访问位置1。这样给了第二次机会的页面将不被淘汰,直至所有其他页面被淘汰过(或者也给了第二次机会)。因此,如果一个页面经常使用,它的访问位总保持为1,它就从来不会被淘汰出去。
第二次机会算法可视为一个环形队列。用一个指针指示哪一页是下面要淘汰的。当需要一个存储块时,指针就前进,直至找到访问位是0的页。随着指针的前进,把访问位就清为0。在最坏的情况下,所有的访问位都是1,指针要通过整个队列一周,每个页都给第二次机会。这时就退化成FIFO算法了。

页面置换算法还有很多变种,如考虑到被置换页是否修改过、按FIFO算法选中的页正在使用等情况,都需要硬件、软件协同实现。

内存分配算法

阅读数 1067

没有更多推荐了,返回首页