一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

線性濾波與卷積的概述與應用研究

新機器視覺 ? 來源:csdn算法與數(shù)學之美 ? 作者:csdn算法與數(shù)學之美 ? 2022-07-06 10:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、線性濾波與卷積的基本概念

線性濾波可以說是圖像處理最基本的方法,它可以允許我們對圖像進行處理,產(chǎn)生很多不同的效果。做法很簡單。首先,我們有一個二維的濾波器矩陣(有個高大上的名字叫卷積核)和一個要處理的二維圖像。然后,對于圖像的每一個像素點,計算它的鄰域像素和濾波器矩陣的對應元素的乘積,然后加起來,作為該像素位置的值。這樣就完成了濾波過程。

d1c28ed8-eacb-11ec-ba43-dac502259ad0.jpg

對圖像和濾波矩陣進行逐個元素相乘再求和的操作就相當于將一個二維的函數(shù)移動到另一個二維函數(shù)的所有位置,這個操作就叫卷積或者協(xié)相關(guān)。卷積和協(xié)相關(guān)的差別是,卷積需要先對濾波矩陣進行180的翻轉(zhuǎn),但如果矩陣是對稱的,那么兩者就沒有什么差別了。

Correlation 和 Convolution可以說是圖像處理最基本的操作,但卻非常有用。這兩個操作有兩個非常關(guān)鍵的特點:它們是線性的,而且具有平移不變性shift-invariant。平移不變性指我們在圖像的每個位置都執(zhí)行相同的操作。線性指這個操作是線性的,也就是我們用每個像素的鄰域的線性組合來代替這個像素。這兩個屬性使得這個操作非常簡單,因為線性操作是最簡單的,然后在所有地方都做同樣的操作就更簡單了。

實際上,在信號處理領域,卷積有廣泛的意義,而且有其嚴格的數(shù)學定義,但在這里不關(guān)注這個。

2D卷積需要4個嵌套循環(huán)4-double loop,所以它并不快,除非我們使用很小的卷積核。這里一般使用3x3或者5x5。而且,對于濾波器,也有一定的規(guī)則要求:

1)濾波器的大小應該是奇數(shù),這樣它才有一個中心,例如3x3,5x5或者7x7。有中心了,也有了半徑的稱呼,例如5x5大小的核的半徑就是2。

2)濾波器矩陣所有的元素之和應該要等于1,這是為了保證濾波前后圖像的亮度保持不變。當然了,這不是硬性要求了。

3)如果濾波器矩陣所有元素之和大于1,那么濾波后的圖像就會比原圖像更亮,反之,如果小于1,那么得到的圖像就會變暗。如果和為0,圖像不會變黑,但也會非常暗。

4)對于濾波后的結(jié)構(gòu),可能會出現(xiàn)負數(shù)或者大于255的數(shù)值。對這種情況,我們將他們直接截斷到0和255之間即可。對于負數(shù),也可以取絕對值。

二、神奇的卷積核

上面說到,對圖像的濾波處理就是對圖像應用一個小小的卷積核,那這個小小的卷積核到底有哪些魔法,能讓一個圖像從慘不忍睹變得秀色可餐。下面我們一起來領略下一些簡單但不簡單的卷積核的魔法。

2.1、啥也不做

哈哈,大家可以看到啥了嗎?這個濾波器啥也沒有做,得到的圖像和原圖是一樣的。因為只有中心點的值是1。鄰域點的權(quán)值都是0,對濾波后的取值沒有任何影響。

d2218e2e-eacb-11ec-ba43-dac502259ad0.jpg

下面我們動點真格的。

2.2、圖像銳化濾波器Sharpness Filter

圖像的銳化和邊緣檢測很像,首先找到邊緣,然后把邊緣加到原來的圖像上面,這樣就強化了圖像的邊緣,使圖像看起來更加銳利了。這兩者操作統(tǒng)一起來就是銳化濾波器了,也就是在邊緣檢測濾波器的基礎上,再在中心的位置加1,這樣濾波后的圖像就會和原始的圖像具有同樣的亮度了,但是會更加銳利。

d244477a-eacb-11ec-ba43-dac502259ad0.jpg

我們把核加大,就可以得到更加精細的銳化效果

d2865b38-eacb-11ec-ba43-dac502259ad0.jpg

另外,下面的濾波器會更強調(diào)邊緣:

d2d41a76-eacb-11ec-ba43-dac502259ad0.jpg

主要是強調(diào)圖像的細節(jié)。最簡單的3x3的銳化濾波器如下:

d314a348-eacb-11ec-ba43-dac502259ad0.png

實際上是計算當前點和周圍點的差別,然后將這個差別加到原來的位置上。另外,中間點的權(quán)值要比所有的權(quán)值和大于1,意味著這個像素要保持原來的值。

2.3、邊緣檢測Edge Detection

我們要找水平的邊緣:需要注意的是,這里矩陣的元素和是0,所以濾波后的圖像會很暗,只有邊緣的地方是有亮度的。

d348d8ca-eacb-11ec-ba43-dac502259ad0.jpg

為什么這個濾波器可以尋找到水平邊緣呢?因為用這個濾波器卷積相當于求導的離散版本:你將當前的像素值減去前一個像素值,這樣你就可以得到這個函數(shù)在這兩個位置的差別或者斜率。下面的濾波器可以找到垂直方向的邊緣,這里像素上和下的像素值都使用:

d373d7f0-eacb-11ec-ba43-dac502259ad0.jpg

再下面這個濾波器可以找到45度的邊緣:取-2不為了什么,只是為了讓矩陣的元素和為0而已。

d39733a8-eacb-11ec-ba43-dac502259ad0.jpg

那下面這個濾波器就可以檢測所有方向的邊緣:

d3bc5aac-eacb-11ec-ba43-dac502259ad0.jpg

為了檢測邊緣,我們需要在圖像對應的方向計算梯度。用下面的卷積核來卷積圖像,就可以了。但在實際中,這種簡單的方法會把噪聲也放大了。另外,需要注意的是,矩陣所有的值加起來要是0.

d4075ec6-eacb-11ec-ba43-dac502259ad0.png

2.4、浮雕Embossing Filter

浮雕濾波器可以給圖像一種3D陰影的效果。只要將中心一邊的像素減去另一邊的像素就可以了。這時候,像素值有可能是負數(shù),我們將負數(shù)當成陰影,將正數(shù)當成光,然后我們對結(jié)果圖像加上128的偏移。這時候,圖像大部分就變成灰色了。

下面是45度的浮雕濾波器

d478b6d4-eacb-11ec-ba43-dac502259ad0.jpg

我們只要加大濾波器,就可以得到更加夸張的效果了

d4bc877e-eacb-11ec-ba43-dac502259ad0.jpg

這種效果非常的漂亮,就像是將一副圖像雕刻在一塊石頭上面一樣,然后從一個方向照亮它。它和前面的濾波器不同,它是非對稱的。另外,它會產(chǎn)生負數(shù)值,所以我們需要將結(jié)果偏移,以得到圖像灰度的范圍。

d50a2222-eacb-11ec-ba43-dac502259ad0.png

d534dba2-eacb-11ec-ba43-dac502259ad0.jpg

A:原圖像。B:銳化。C:邊緣檢測。D:浮雕

2.5、均值模糊Box Filter (Averaging)

我們可以將當前像素和它的四鄰域的像素一起取平均,然后再除以5,或者直接在濾波器的5個地方取0.2的值即可,如下圖:

d565a250-eacb-11ec-ba43-dac502259ad0.jpg

可以看到,這個模糊還是比較溫柔的,我們可以把濾波器變大,這樣就會變得粗暴了:注意要將和再除以13.

d57c8b3c-eacb-11ec-ba43-dac502259ad0.jpg

所以,如果你想要更模糊的效果,加大濾波器的大小即可?;蛘邔D像應用多次模糊也可以。

d5a5cc5e-eacb-11ec-ba43-dac502259ad0.png

2.6、高斯模糊

均值模糊很簡單,但不是很平滑。高斯模糊就有這個優(yōu)點,所以被廣泛用在圖像降噪上。特別是在邊緣檢測之前,都會用來移除細節(jié)。高斯濾波器是一個低通濾波器。

d63e411e-eacb-11ec-ba43-dac502259ad0.jpg

2.7、運動模糊Motion Blur

運動模糊可以通過只在一個方向模糊達到,例如下面9x9的運動模糊濾波器。注意,求和結(jié)果要除以9。

d7684c4c-eacb-11ec-ba43-dac502259ad0.jpg

這個效果就好像,攝像機是從左上角移動的右下角。

三、卷積的計算

對圖像處理而言,存在兩大類的方法:空域處理和頻域處理!空域處理是指直接對原始的像素空間進行計算,頻率處理是指先對圖像變換到頻域,再做濾波等處理。

3.1、空域計算-直接2D卷積

3.1.1、2D卷積

直接2D卷積就是一開始說的那樣,對于圖像的每一個像素點,計算它的鄰域像素和濾波器矩陣的對應元素的乘積,然后加起來,作為該像素位置的值。

d8b22956-eacb-11ec-ba43-dac502259ad0.jpg

直接的實現(xiàn)也稱為暴力實現(xiàn)brute force,因為它嚴格按照定義來實現(xiàn),沒有任何優(yōu)化。當然了,在并行實現(xiàn)里面,它也是比較靈活的。另外,也存在一個優(yōu)化版本,如果我們的kernel是separable可分的,那么就可以得到一個快5倍左右的卷積方法。

2.1.2、邊界處理

那卷積核遇到圖像邊緣怎么辦?例如圖像頂部的像素,它的上面已經(jīng)沒有像素了,那么它的值如何計算?目前有四種主流的處理方法,我們用一維卷積和均值濾波來說明下。

我們在1D圖像中,用每個像素和它的二鄰域的平均值來取代它的值。假設我們有個1D的圖像I是這樣的:

d8dc4dee-eacb-11ec-ba43-dac502259ad0.png

對非圖像邊界的像素的操作比較簡單。假設我們對I的第四個像素3做局部平均。也就是我們用2,3和7做平均,來取代這個位置的像素值。也就是,平均會產(chǎn)生一副新的圖像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)。所以每個像素都是它和它鄰域兩個像素的平均。平均是線性的操作,因為每個新的像素都是舊像素的線性組合。

d9044f56-eacb-11ec-ba43-dac502259ad0.jpg

對卷積,也有必須要考慮的情況是,在圖像邊界的時候,怎么辦?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.

d92405b2-eacb-11ec-ba43-dac502259ad0.png

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。

d940fcc6-eacb-11ec-ba43-dac502259ad0.png

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 。

d95b004e-eacb-11ec-ba43-dac502259ad0.png

4)最后一種情況就是不管其他地方了。我們覺得I之外的情況是沒有定義的,所以沒辦法使用這些沒有定義的值,所以要使用圖像I沒有定義的值的像素都沒辦法計算。在這里,J(1)和J(10)都沒辦法計算,所以輸出J會比原圖像I要小。

這四種方法有各自的優(yōu)缺點。如果我們想象我們使用的圖像只是世界的一個小窗口,然后我們需要使用窗口邊界外的值,那么一般來說,外面的值和邊界上的值是幾乎相似的,所以第二種方法可能更說得過去。

2.2、頻域計算-快速傅里葉變換FFT卷積

這個快速實現(xiàn)得益于卷積定理:時域上的卷積等于頻域上的乘積。所以將我們的圖像和濾波器通過算法變換到頻域后,直接將他們相乘,然后再變換回時域(也就是圖像的空域)就可以了。

d9817026-eacb-11ec-ba43-dac502259ad0.png

o表示矩陣逐元素相乘。那用什么方法將空域的圖像和濾波器變換到頻域了。那就是鼎鼎大名的Fast Fourier Transformation 快速傅里葉變換FFT(其實,在CUDA里面,已經(jīng)實現(xiàn)了FFT了)。

要在頻域中對一副圖像進行濾波,濾波器的大小和圖像的大小必須要匹配,這樣兩者的相乘才容易。因為一般濾波器的大小比圖像要小,所以我們需要拓展我們的kernel,讓它和圖像的大小一致。

d9c3c066-eacb-11ec-ba43-dac502259ad0.jpg

因為CUDA中的FFT實現(xiàn)是周期的,所以kernel的值也要安排成這樣,以支持這種周期性。

為了保證圖像邊界的像素也可以得到響應輸出,我們也需要拓展我們的輸入圖像。同時,拓展的方式也要支持周期表達。

d9dddd3e-eacb-11ec-ba43-dac502259ad0.jpg

如果只是使用卷積定理,沒有對輸入進行任何修改的話,那么我們得到的是周期卷積的結(jié)果。但這可能不是我們要的,因為周期卷積會對輸入數(shù)據(jù)進行周期填補,引入一些artifacts。

給定N長度的I和K,為了得到線性卷積,我們需要對I和K進行zero padding。為什么要補0,因為DFT假定了輸入是無限和周期的,周期是N。

da056520-eacb-11ec-ba43-dac502259ad0.jpg

如上圖,對于I和K,如果沒有padding的話,隱含著會假定I和K是周期的,以他們的長度N為周期。圖中本來N長度的I和K都是黑色虛線的部分,然后如果沒有padding,隱含著就會在N之外,加上同樣的無數(shù)個I,如紅色虛線部分,加上了一個周期。對K也是這樣。如果是zero padding的話,在黑色虛線的其他地方都全是0了,如圖中藍色部分。將I和K卷積,如果沒有padding,如黑色虛線,會有紅色那部分的artifact。如果有padding,就是藍色實線。

四、實驗代碼

這是第二部分的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))


審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 濾波器
    +關(guān)注

    關(guān)注

    162

    文章

    8133

    瀏覽量

    181923

原文標題:圖像卷積與濾波的一些知識點

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    霍爾傳感器在直流電機轉(zhuǎn)速測量中的應用研究

    純分享帖,需要者可點擊附件免費獲取完整資料~~~*附件:霍爾傳感器在直流電機轉(zhuǎn)速測量中的應用研究.pdf【免責聲明】本文系網(wǎng)絡轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第一時間告知,刪除內(nèi)容!
    發(fā)表于 05-29 14:12

    四創(chuàng)電子召開人工智能應用研究中心成立大會

    近日,四創(chuàng)電子召開人工智能應用研究中心成立大會暨揭牌儀式,公司黨委、經(jīng)營班子成員,子公司、各部門負責人,高層次人才及相關(guān)員工代表參加會議。
    的頭像 發(fā)表于 04-18 17:12 ?536次閱讀

    如何使用MATLAB實現(xiàn)一維時間卷積網(wǎng)絡

    本文對一維卷積操作進行介紹,包括一維擴展卷積和一維因果卷積,以及 MATLAB 對一維卷積的支持情況。在最后通過一個實例演示如何在 MATLAB 中將一維
    的頭像 發(fā)表于 03-07 09:15 ?1061次閱讀
    如何使用MATLAB實現(xiàn)一維時間<b class='flag-5'>卷積</b>網(wǎng)絡

    半透明光伏組件在BIPV中的優(yōu)化應用研究

    電子發(fā)燒友網(wǎng)站提供《半透明光伏組件在BIPV中的優(yōu)化應用研究.pdf》資料免費下載
    發(fā)表于 02-07 16:02 ?1次下載

    ads1278內(nèi)部的線性濾波器是多少階的?

    大家好,我想請問一下ads1278內(nèi)部的線性濾波器是多少階的。另外,在數(shù)據(jù)輸出端口我把數(shù)據(jù)存入FPGA的ram里面,但是要把數(shù)據(jù)復現(xiàn)信號波形的時候,不能從第一個數(shù)據(jù)開始把數(shù)上傳,而是要從第N個開始(N是多次試驗出來的值),請問這是和ads1278內(nèi)部的
    發(fā)表于 01-06 07:05

    高頻焊接數(shù)據(jù)記錄系統(tǒng)優(yōu)化與應用研究

    問題,嚴重影響了焊接質(zhì)量和生產(chǎn)效率。因此,對高頻焊接數(shù)據(jù)記錄系統(tǒng)進行優(yōu)化與應用研究,不僅能夠提升焊接質(zhì)量,還能為生產(chǎn)管理提供科學依據(jù),具有重要的理論和實踐意義。
    的頭像 發(fā)表于 12-24 14:04 ?397次閱讀
    高頻焊接數(shù)據(jù)記錄系統(tǒng)優(yōu)化與<b class='flag-5'>應用研究</b>

    卷積神經(jīng)網(wǎng)絡的實現(xiàn)工具與框架

    卷積神經(jīng)網(wǎng)絡因其在圖像和視頻處理任務中的卓越性能而廣受歡迎。隨著深度學習技術(shù)的快速發(fā)展,多種實現(xiàn)工具和框架應運而生,為研究人員和開發(fā)者提供了強大的支持。 TensorFlow 概述
    的頭像 發(fā)表于 11-15 15:20 ?657次閱讀

    卷積神經(jīng)網(wǎng)絡的參數(shù)調(diào)整方法

    的數(shù)量和大小 :增加卷積層可以提高模型的學習能力,但同時也會增加計算成本和過擬合的風險。通常需要根據(jù)具體任務和數(shù)據(jù)集的大小來平衡這兩者。 濾波器(卷積核)的數(shù)量和大小 :濾波器的數(shù)量決
    的頭像 發(fā)表于 11-15 15:10 ?1201次閱讀

    卷積神經(jīng)網(wǎng)絡的基本原理與算法

    卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)是一類包含卷積計算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(Feedforward Neural Networks,F(xiàn)NN
    的頭像 發(fā)表于 11-15 14:47 ?1764次閱讀

    關(guān)于卷積神經(jīng)網(wǎng)絡,這些概念你厘清了么~

    神經(jīng)網(wǎng)絡的訓練中非常有效。卷積層使用一種被稱為卷積的數(shù)學運算來識別像素值數(shù)組的模式。卷積發(fā)生在隱藏層中,如圖3所示。卷積會重復多次直至達到所需的精度水平。如果要比較的兩個輸入值(本例是
    發(fā)表于 10-24 13:56

    蘋果深圳應用研究實驗室正式運營

    近日,蘋果公司宣布其在河套深圳園區(qū)的應用研究實驗室已正式建成并開始運營。該實驗室被定位為蘋果公司粵港澳大灣區(qū)研發(fā)中心,是蘋果在美國本土以外覆蓋范圍最廣泛的實驗室之一。
    的頭像 發(fā)表于 10-11 15:52 ?652次閱讀

    高斯濾波和均值濾波的區(qū)別

    高斯濾波和均值濾波在圖像處理中都是常用的平滑濾波方法,但它們之間存在一些關(guān)鍵的區(qū)別。以下是兩者之間的主要區(qū)別: 1. 濾波原理 高斯濾波
    的頭像 發(fā)表于 09-29 09:40 ?1661次閱讀

    高斯濾波和雙邊濾波的區(qū)別

    高斯濾波和雙邊濾波在圖像處理中都是常用的平滑濾波技術(shù),但它們之間存在一些顯著的區(qū)別。以下是兩者之間的主要區(qū)別: 一、基本原理 高斯濾波 : 是一種
    的頭像 發(fā)表于 09-29 09:37 ?1174次閱讀

    高斯濾波卷積核怎么確定

    高斯濾波卷積核確定主要依賴于高斯函數(shù)的特性以及圖像處理的具體需求。以下是確定高斯濾波卷積核的幾個關(guān)鍵步驟: 一、確定卷積核的大小
    的頭像 發(fā)表于 09-29 09:29 ?1672次閱讀

    高斯濾波的基本原理有哪些

    高斯濾波的基本原理可以從以下幾個方面進行闡述: 一、定義與性質(zhì) 定義 :高斯濾波(Gaussian Filter)是一種常見的圖像處理技術(shù),實質(zhì)上是一種信號的濾波器,用于平滑和降噪圖像。它采用高斯
    的頭像 發(fā)表于 09-29 09:27 ?1528次閱讀