pg下载网站麻将胡了 图像处理-卷积实现

频道:生活应用 日期: 浏览:32

目录

如锐化、运动模糊、高斯模糊如何实现?

1空间滤波 1.1线性空间滤波

滤波过程,是于图像f里,逐点移动滤波模板w的中心,在每个(x,y)处,滤波器于该点处的响应,是由滤波模板限定的对应邻域像素与滤波器系数乘积结果累加之和。

1.1.1卷积的产生

一般而言,我们检测一个图像的边缘,通常用到的方式,是去判断灰度值是否连续,那么,究竟该如何检测灰度值是否连续呢?

答案:求导。

进行求导所获取到的乃是一条线斜率的改变情况,凭借斜率的这种改变便能够得到灰度值发生突变的点。于此处需要设置一个阈值T,当导数大于T的时候,那就表明这是属于边缘的点了。

如下一组数据代表一个方向上的灰度变化:

f0 :0 0 1 1 1 6 2 2 1 0

一阶求导:

图像锐化运动模糊高斯模糊_卷积在生活应用

可以看见,到第6个像素之际,灰度出现突变,然而,效果并非特别显著,接着开展二阶求导:

图像锐化运动模糊高斯模糊_卷积在生活应用

变化被放大,可以很明显的看到灰度突变的点。

对比图如下:

卷积在生活应用_图像锐化运动模糊高斯模糊

经过对比,能够显著分明地找出灰度发生突变的点,因而,只要设定好阈值T,也就能够寻获图像边缘。具体的详细情况参照第6章,图像分割。

经由上述所提及的案例,我们能够找寻到图像的边缘,其时间复杂度为O(n^2),那么该如何去进行优化呢?另外,二阶求导与卷积之间存在着怎样的关系呢?

下面以一个拉普拉斯滤波器为例进行讲解:

图像f(x,y)的拉普拉斯算子定义为 ∇2f(x,y):

二阶导数的常用数字近似为

因而有:

这个表达式,能够运用到图像里的每一个点上,其方式是经由采用下面的空间模板去和图像做卷积:

卷积在生活应用_图像锐化运动模糊高斯模糊

有一种对于数字二阶导数的可选定义,是要去考虑对角线元素。并且,它能够借助下面的模板来加以实现。

卷积在生活应用_图像锐化运动模糊高斯模糊

至此,图像处理从求导计算进入卷积计算。

1.1.2线性滤波与卷积的基本概念

线性滤波算得上是图像处理最为基础的方法,它能够让我们对图像予以处理,进而产生诸多各异的效果。其做法颇为简易。首先,我们存有一个二维的滤波器矩阵(有着一个颇为高端的称谓叫卷积核)以及一幅需要处理的二维图像。接着,针对图像的每一个像素点,测算其邻域像素与滤波器矩阵的对应元素的乘积,随后加总起来,将其当作该像素位置的值。如此便达成了滤波过程。

卷积在生活应用_图像锐化运动模糊高斯模糊

对图像与滤波矩阵,进行逐个元素相乘,之后再求和的这般操作,这就等同于把一个二维的函数,移至另一个二维函数之处,且是移至其所有位置,而这样的操作,就被称作卷积或者协相关。卷积跟协相关之间存在差别,具体是,卷积需要先针对滤波矩阵做180的翻转,然而要是矩阵是对称的,那么这两者就不存在什么差别了。

事实上,于信号处理范畴之内,卷积具备广泛的意义,并且存在其严格的数学定义,然而在此处对这个并不予以关注。

2D卷积所需的是4个嵌套循环4 - double loop,所以它并非速度快的那种,除非我们运用的是尺寸小的卷积核。这里通常采用的是3x3或者5x5。并且,针对滤波器而言,也是存在一定规则性要求的:

1)它具备这样所呈现的一种特性,即滤波器的大小应当是奇数,如此一来它便能拥有其中一个中心点,举例说来例如3x3规格这种形态,或者5x5规格那种样式,又或者7x7规格这般情形。当有了中心之后,也就随之产生了半径这种称呼,比如说5x5作为大小的核所对应的这个半径就是2其表述。

2)应当要使得滤波器矩阵里头所有的元素加起来的和等于1,这么做是为了确保滤波前后的图像亮度维持不变。当然咯,这并非是硬性规定了。

3)倘若滤波器矩阵里面所有元素加起来的总和大于1,情形下滤波之后的图像就会相较于原图像更亮,相反的情况,而要是小于1,那所得到的图像就会变得暗下来。要是相关的和为0,图像不会变成黑色,然而也会处于非常暗的状态。

4)被滤波之后的结构,存在或许会出现负数的情况,也存在或许会出现大于255的数值的情况。针对这种状况,我们把它们径直截断到0和255之间就行。对于负数而言,也能够取其绝对值。

1.1.3卷积核

刚刚提到过,针对于图像所进行的滤波处理,实际上就是给图像运用一个体积微小的卷积核,可是,这个尺寸不大的卷积核究竟具备哪些神奇魔力呢,竟然能够促使一幅模样难看的图像转变成极具美感的图像。接下来,我们一同去感受一番某些看似平常实则不平常的卷积核所拥有的神秘力量。

2.1、啥也不做

哈哈,大家伙儿能够瞧见啥东西了不?这款滤波器压根啥都没有去做,所获得到的图像和最初的图像是一模一样的。缘由在于仅仅中心点的数值是1,而邻域点的权值全部都是0,对于滤波之后的取值不存在任何的影响。

图像锐化运动模糊高斯模糊_卷积在生活应用

下面我们动点真格的。

2.2、图像锐化滤波器Sharpness Filter

和边缘检测类似的图像锐化行为,先是找出边缘,接着将边缘添加至原本的图像之上,如此一来便加强并且深化图像的边缘,使得图像看上去更为锐利清晰。这两者的操作结合起来便构成了锐化滤波器,也就是在边缘检测滤波器的基础上,于中心位置加上一个1,这样滤波之后的图像就会和原始图像拥有同样的亮度,然而却会显得更加具有锐利感。

图像锐化运动模糊高斯模糊_卷积在生活应用

我们把核加大,就可以得到更加精细的锐化效果

图像锐化运动模糊高斯模糊_卷积在生活应用

另外,下面的滤波器会更强调边缘:

卷积在生活应用_图像锐化运动模糊高斯模糊

主要是强调图像的细节。最简单的3x3的锐化滤波器如下:

图像锐化运动模糊高斯模糊_卷积在生活应用

真实来讲是对当下这点跟周边点的差异予以计算,随后把此差异增添运用到原本所处的位置之上。除此之外,处在中间位置的点所具有的权值相较于全部的权值总和而言是大于1的,这表明这个像素依照原来的数值予以保持。

2.3、边缘检测Edge Detection

我们要去寻找那种具备水平特征的边缘,需要留意的是,在此处矩阵当中元素的总和是0,所以经过滤波处理之后的图像将会显得十分暗,仅仅只有处于边缘范围中的区块才存在着亮度。

图像锐化运动模糊高斯模糊_卷积在生活应用

为何这个滤波器能够寻觅到水平边缘呢,是由于运用此滤波器进行卷积恰似就是求导的离散形式,你把当前像素值减掉前一个像素值,如此你便能获取该函数在这两个位置的差异或者斜率,下面的滤波器能够找到垂直方向的边缘,此处像素上下的像素值均予以使用:

图像锐化运动模糊高斯模糊_卷积在生活应用

紧接着下面的该滤波器能够寻得45度的边框棱边,选取-2并非是出于什么特定的缘由,仅仅是为了达成让矩阵所包含的元素汇总求和为0这般的如此而已。

图像锐化运动模糊高斯模糊_卷积在生活应用

那下面这个滤波器就可以检测所有方向的边缘:

图像锐化运动模糊高斯模糊_卷积在生活应用

为对边缘予以检测,我们得于图像相应方向开展梯度计算,借助下面的卷积核来对图像实施卷积操作,方才行得通。然而在现实当中,此种简易办法会将噪声予以增大。此外,需留意的是,矩阵全部的值加起来应当为0。

卷积在生活应用_图像锐化运动模糊高斯模糊

2.4、浮雕Embossing Filter

浮雕滤波器能够赋予图像一种呈现3D阴影的特定效果,只需把中心一侧的像素减去另一侧的像素即可,此时,像素值存在可能为负数的情况,我们把负数视作阴影,将正数当作光,随后我们针对结果图像添加128的偏移,这时,图像的大部分就转变为灰色了。

下面是45度的浮雕滤波器

卷积在生活应用_图像锐化运动模糊高斯模糊

我们只要加大滤波器,就可以得到更加夸张的效果了

图像锐化运动模糊高斯模糊_卷积在生活应用

这种效果极其的好看,好似把一幅图像雕琢於一块石头之上那般,接着从一个方向去照亮它,它跟前面的滤波器不一,它是不对称的,此外,它会生成负数值pg下载官方认证,所以我们得将结果偏移,从而获取图像灰度的范围。

图像锐化运动模糊高斯模糊_卷积在生活应用

卷积在生活应用_图像锐化运动模糊高斯模糊

A:原图像。B:锐化。C:边缘检测。D:浮雕

2.5、均值模糊Box Filter (Averaging)

一同把目前像素跟它四邻域的像素进行取平均操作,接着再除以5,或处在滤波器的5个位置直接取0.2的值就行,像下面这图这样:

卷积在生活应用_图像锐化运动模糊高斯模糊

能够瞧见,这般模糊是较为温柔的,我们能够把滤波器予以增大,如此便会变得粗暴起来:留意要把和再除以13。

卷积在生活应用_图像锐化运动模糊高斯模糊

因此,要是你期望收获更为模糊的成效,那就增大滤波器的尺寸就行。或者将模糊多次施加于图像同样可行。

图像锐化运动模糊高斯模糊_卷积在生活应用

卷积在生活应用_图像锐化运动模糊高斯模糊

2.6、高斯模糊

均值模糊虽说操作起来并不复杂,然而却并非十分平滑,高斯模糊具备这样的优势,鉴于此被广泛应用于图像降噪之中,特别是在进行边缘检测之前,常常会借助它来去除细节,高斯滤波器属于一种低通滤波器。

卷积在生活应用_图像锐化运动模糊高斯模糊

图像锐化运动模糊高斯模糊_卷积在生活应用

2.7、运动模糊Motion Blur

运动模糊能够借助仅在单一方向实施模糊来达成,比如说下述那呈9x9构架的运动模糊滤波器。留意哦,求和所获的结果应当除以9。

图像锐化运动模糊高斯模糊_卷积在生活应用

这个效果就好像,摄像机是从左上角移动的右下角。

经由卷积处理过后的极佳效果,能够在图中清晰呈现。接下来所进行的展现相关计算内容的对比,是基于卷积之后处理的数据,这样会更直观。

卷积在生活应用_图像锐化运动模糊高斯模糊

经由一次简易的卷积运算,能够得出亮度产生突变的像素点之所,而这些便都是图像的边缘之处。

1.2.4卷积的计算

针对于图像处理来讲,有着包含空域处理以及频域处理这两大类别的方法!空域处理所指代的情况是直接针对原始的像素空间展开计算,频率处理所指的是首先将图像变换至频域,之后再开展诸如滤波等方面的处理。

1.2.4.1空域计算-直接2D卷积

(1)2D卷积

最初所讲的直接2D卷积是这样的 ,针对图像里的每一个像素点 ,去计算其邻域像素与滤波器矩阵对应元素的乘积 ,接着相加求和 ,以此作为该像素所在位置的值。

图像锐化运动模糊高斯模糊_卷积在生活应用

采取直接方式的那种实现,也被称作暴力实现brute force,这是由于它严格依照定义去达成,不存在哪怕一点儿方面的优化,无可置疑。再者,到了并行实现范畴内,它也算是具备一定灵活性的那种。除此之外,还存在着一个获取优化结果之后成型的版本,要是我们所涉及的kernel属于separable可分的那种情况,那么便能够收获一种在速度方面比原本快5倍上下的卷积方法。

(2)边界处理

对于卷积核碰到图像边缘这种情况该如何处理呢,比如说图像顶部的那些像素,其上面并不存在别的像素了,那么它的具体值要怎样去计算呢,当下存在着四种主流的处理方式,我们借助一维卷积以及均值滤波来进行一下说明。

我们处于1D图像里,采用每个像素以及它的二邻域的平均值去替换它的值,假定我们存在一个如此这般的1D图像I ,是这样的:

针对并非图像边界的像素展开的操作相对简洁,假定我们针对I的第四个像素3实施局部平均,也就是说我们运用2、3以及7进行平均来替换该位置的像素值,即平均会生成一幅全新的图像J,此图像在相同位置J(4)=(I(3)+I(4)+I(5))/3=(2+3+7)/3 = 4,同样地,我们能够得出J(3)=(I(2)+I(3)+I(4))/3=(4+2+3)/3 = 3。需留意的是,新图像的各个像素皆取决于旧图像,计算J (4)时使用J (3)是错误的,应使用I(3),I()4以及I(5)。故而,每个像素都是它,与它邻域的两个像素的平均。平均属于线性操作,鉴于每个新像素均为旧像素的线性组合。

卷积在生活应用_图像锐化运动模糊高斯模糊

有这样一种情况是必须要对卷积加以考虑的,那就是当处于图像边界的时候,该如何去做?J(1)应当具有怎样的值?它是由I(0),I(1)以及I(2)来决定的。然而我们并没有I(0)!图像的左边已经不存在值了。存在四种处理此问题的方式!

1)首先,第一种情形是,想象I属于无限长图像的一部分,除开我们给定值的那部分,其余部分像素值皆为0,在此状况下,I(0)=0。故而,J(1) = (I(0) + I(1) + I(2))/3 ,也就是等于(0 + 5 + 4)/3,结果是3。同样的道理,J(10) = (I(9)+I(10)+I(11))/3 ,即等于(3+ 6 + 0)/3 ,最终结果是3。

2)第二种方法同样是,想象I属于无限图像的一部分,不过,未指定的部分是借助图像边界的值来拓展,在我们所举的例子当中,鉴于图像I最左边的值是I(1)=5,所以,其左边的全部值,我们都认定为是5,并且,图像右边的所有值,我们都认定和右边界的值I(10)相同,皆是6。在这个时候,J(1)等于(I(0)加上I(1)加上I(2))除以3,也就是(5加上5加上4)除以3,结果是14除以3。而J(10)等于(I(9)加上I(10)加上I(11))除以3,即(3加上6加上6)除以3,等于5。

3)对图像呈现周期性的第三种情形而言,即I不断进行重复,其周期为I的长度,在我们所处的这里,I(0)和I(10)有着相同的值,I(11)的值等同于I(1)的值,所以J(1)等于(I(在0序位的值)加上I(在1序位的值)加上I(在2序位的值))除以3,也就是等于(I(在10所在序位的值)加上I(在1序位的值)加上I(在2序位的值))除以3,进而等于(6加上5加上4)除以3,结果为5。

4)最后一种情形便是,不再顾及其他地方了。我们认定,I之外的情形是未被定义的,故而无法运用这些未被定义的值,因而要运用图像I未被定义的值的像素皆无法进行计算。在此处,J(1)以及J(10)均无法进行计算,所以输出的J会相较于原图像I而更小。

想象一下,这四种方法,有着各自的优点与缺点。我们所使用的图像,仅仅是世界的一个小小的窗口。而此时,我们需要用到窗口边界之外的值。通常来讲,外面的值跟边界上的值pg下载,几乎是相似的。所以,第二种方法,可能相对更说得过去。

1.2.4.2频域计算-快速傅里叶变换FFT卷积

这个能够快速达成是受益于卷积定理,即:时域当中的卷积等同于频域里面的乘积。故而,把我们的图像以及滤波器借助算法转变到频域之后,直接将它们相乘,接着再转变回到时域(也就是图像的空域)便行了。

若o表示矩阵逐元素相乘,那么采用何种方法能将空域的图像以及滤波器变换到频域呢,那便是大名鼎鼎、赫赫有名的Fast Fourier Transformation快速傅里叶变换FFT(实际上,于CUDA当中,已然实现了FFT)。

若要于频域之中针对一幅图像开展滤波操作,那么滤波器的大小跟图像的大小必然得相互匹配才行,唯有如此两者相乘才会较为容易。鉴于一般情况下滤波器的大小相较于图像而言是更小的,所以我们需要去拓展我们的kernel,使得它与图像的大小达成一致。

卷积在生活应用_图像锐化运动模糊高斯模糊

由于CUDA里的FFT实现具备周期性,因而kernel的值同样得如此安排,进而支持这般周期性。

为了确保图像边界之处的那些像素同样能够获取响应输出,我们还得对我们所输入的图像予以拓展 ,与此同时,拓展所采用的方式还得能够支持周期表达。

图像锐化运动模糊高斯模糊_卷积在生活应用

仅使用卷积了定理,未对输入做任何修改,如此一来,我们所获取的乃是周期卷积的结果。然而,这兴许并非我们所期望的,鉴于周期卷积会对输入数据开展周期填补,进而引入一些伪像。

给定长度为N的I与K,要想得到线性卷积,我们必需针对I和K开展zero padding事项。对于为何要补0而言,原因在于DFT假定了输入是无限且周期的,而周期是N。

卷积在生活应用_图像锐化运动模糊高斯模糊

如上面的图所示,针对 I 和 K 而言,要是不存在 padding 的情况,那就隐含着会假定 I 和 K 是具备周期性的,是以它们的长度 N 作为周期。在图里,原本长度为 N 的 I 和 K 都是呈现为黑色虚线的那部分,接着要是没有 padding,这就隐含着会在 N 的范围之外,添加上同样的无数个 I,就如同红色虚线部分那样,添加了一个周期。对于 K 同样是如此这般。要是采用 zero padding 的方式,在黑色虚线的其他位置就全都变为 0 了,就像图中的蓝色部分那样。把I与K进行卷积,要是不存在padding,如同黑色虚线那般,就会出现红色那一部位的artifact。要是有padding,呈现的便是蓝色实线。

1.2.5代码实现

这是第二部分的Matlab实验代码:

clear,close all, clc
 
%% readimage
image =imread('test.jpg');
 
%% definefilter
% -----Identity filter -----
kernel =[0, 0, 0
                     0, 1, 0
                     0, 0, 0];
 
% -----Average Blur -----
kernel =[0, 1, 0
                     1, 1, 1
                     0, 1, 0] / 5;
 
% -----Gaussian Blur -----
kernel =fspecial('gaussian', 5 , 0.8);
 
% -----Motion Blur -----
kernel =[1, 0, 0, 0, 0
                     0, 1, 0, 0, 0
                     0, 0, 1, 0, 0
                     0, 0, 0, 1, 0
                     0, 0, 0, 0, 1] / 5;
                    
% -----Edges Detection -----
kernel =[-1, -1, -1
                     -1, 8, -1
                     -1, -1, -1];
 
% -----Sharpen filter -----
kernel =[-1, -1, -1
                     -1, 9, -1
                     -1, -1, -1];
                    
% -----Emboss filter -----
kernel =[-1, -1, 0
                     -1,  0,1
                     0,   1,1];
                    
%% convolethe image with defined kernel or filter
result =zeros(size(image));
result(:,:, 1) = conv2(double(image(:, :, 1)), double(kernel), 'same');
result(:,:, 2) = conv2(double(image(:, :, 2)), double(kernel), 'same');
result(:,:, 3) = conv2(double(image(:, :, 3)), double(kernel), 'same');
 
%% showthe result
imshow(image);
figure
imshow(uint8(result))

供参考的文档:关于图像卷积以及滤波的某些知识点,卷积滤波方面,来自zouxy09的博客,在CSDN博客平台上。

1.2非线性空间滤波

非线性空间滤波器所依托的是涉及滤波器所包围邻域内像素的非线性运算,比如说,有一种运算,它让每个中心点处的响应等同于其邻域内具有最大数值、表示图像元素的那个像素值,这种运算就是一种非线性滤波运算。

1.3性能优化

快速傅里叶变换:

用于快速傅里叶变换的FFT,是那种极其容易理解明白的,出自路人黑的纸巾所写的博客,该博客位于CSDN平台。

2频率域滤波

空间域的卷积和频率域的乘积组成一个傅里叶变换对。

空间域中,g(x,y)等于h(x,y)与f(x,y)相乘,这代表着卷积。

频率域:G(u,v) = H(u,v)F(u,v)

2.1DFT滤波的基本步骤

(1)使用函数把输入图像转换为浮点图像

(2)使用函数获得填充参数(0填充)

(3)得到有填充图像的傅里叶变换

(4)生成与图像一致的滤波器

(5)用滤波器乘以该变换

(6)获取图像的IFFT傅里叶反变换

(7)将左上角的矩形裁剪为原始大小

(8)需要时,将滤波后的图像转换为输入图像的类

2.2低通(平滑)滤波器

如高斯模糊。

巴特沃斯、高通  滤波器

2.3高通(锐化)滤波器

高斯高通滤波器。

3图像复原与重建 3.1模型 3.1.1公式模型

f关于x、y的函数,经过变换成为退化函数H,之后加上噪声n关于x、y的函数,进而得到了g关于x、y的函数,也就是退化后的图g。

g(x,y),通过某种情况,致使复原滤波器等于 ^f(x,y),进而得到复原图像的估计。

公式:

转换到频率域:

频率的领域,G(u,v)等于,H(u,v)F(u,v)加上,N(u,v)。

3.1.2噪声模型 3.2图像重建

如CT通过投影重建图像。

4彩色图像处理

对RGB分别进行处理。

5图像压缩

压缩通过去除一个或三个基本的数据冗余来实现:

(1)编码冗余

(2)空间或、和时间冗余

(3)不相关信息

5.1模型

将 f(x,y),通过映射器进行处理,再经量化器进行量化,接着由符号编码器编码,之后成为编码器的输入,编码器输出压缩后的图像,经符号解码器解码,再经反映射器处理,最终得出^f(x,y)。

5.2编码冗余

,灰度级出现的概率

在式子当中,nk属于图像里出现第k级灰度的次数,n是图像之中的像素总数。

倘若用来表示每个rk值会用到的比特子数称作为l也就是括圆弧符号rk括圆弧符号,那么用来表示每个像素必然要用的平均比特子数等于:

就是说,赋给各个灰度级的码字,其平均的长度,是经由去对用于表示每个灰度级的比特数,以及该灰度级出现的概率,这两者的乘积进行求和,进而得以获得的。

这样,编码一幅M*N图像所需的总比特数就是Lavg.

5.2.1霍夫曼编码(哈夫曼编码)

详尽地用图形解析哈夫曼Huffman编码树,哈夫曼编码,这是无鞋童鞋所写的博客,其发布在CSDN博客平台上。

C代码:

【数据结构,其中涉及哈夫曼编码,且为C语言版】,_哈夫曼编码的c语言代码_,_黎子想写好代码的博客_,与-CSDN博客相关。

C++代码:

哈夫曼树,其编码以及译码,有着完整的C/C++实现代码,其中哈夫曼译码代码相关内容,来自菜鸡逆袭的博客,该博客位于CSDN网站。

5.2.2霍夫曼解码 5.3空间冗余

用变长编码来减少由像素的自然二进制编码导致的编码冗余。

en=fn-^fn

有一个输入图像,它会经进入预测器,预测器会得出最近接近的整数,这个整数经过fn运算后到达符号编码器en的位置,最终得出压缩后的图像。

5.4不相关信息

有损压缩

5.5JPEG压缩 5.6视频压缩 6图像分割

关于单色图像的分割算法,存在着两类,一般而言,是基于图像灰度值的两个性质,所谓不连续性,以及相似性,从而构成这个算法基础的。

第一类算法:检测灰度突变来分割图像。

第二类算法:根据一组预定义的规则,将图像分割为相似的区域。

6.1 点、线以及边缘检测,6.2 阈值处理,6.3 基于区域的图像分割,6.4 使用分水岭变换的分割pg下载网站麻将胡了,7 描述与表示。

参考书籍:数字图像处理(MATLAB版)

网友留言(0)

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。