日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详析数字图像中高斯模糊理论及实现

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详析数字图像中高斯模糊理论及实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

高斯模糊(英語:Gaussian Blur),也叫高斯平滑。是在Adobe Photoshop、GIMP以及Paint.NET等圖像處理軟件中廣泛使用的處理效果,通經常使用它來降低圖像噪聲以及降低細節層次。
簡單介紹:高斯模糊(Gaussian Blur)是美國Adobe圖像軟件公司開發的一個圖像處理軟件:Adobe Photoshop(系列)中的一個濾鏡,詳細的位置在:濾鏡—模糊——高斯模糊!

高斯模糊的原理中,它是依據高斯曲線調節像素色值,它是有選擇地模糊圖像。說得直白一點,就是高斯模糊能夠把某一點周圍的像素色值按高斯曲線統計起來,採用數學上加權平均的計算方法得到這條曲線的色值,最后能夠留下人物的輪廓,即曲線.是指當 Adobe Photoshop 將加權平均應用于像素時生成的鐘形曲線。


原理:
1 周邊像素的平均值
所謂”模糊”。能夠理解成每一個像素都取周邊像素的平均值。

上圖中,2是中間點。周邊點都是1。

”中間點”取”周圍點”的平均值。就會變成1。在數值上,這是一種”平滑化”。在圖形上。就相當于產生”模糊”效果,”中間點”失去細節。


顯然,計算平均值時,取值范圍越大,”模糊效果”越強烈。

上圖各自是原圖、模糊半徑3像素、模糊半徑10像素的效果。模糊半徑越大,圖像就越模糊。從數值角度看,就是數值越平滑。
接下來的問題就是,既然每一個點都要取周邊像素的平均值。那么應該怎樣分配權重呢?
假設使用簡單平均。顯然不是非常合理,由于圖像都是連續的,越靠近的點關系越密切,越遠離的點關系越疏遠。

因此,加權平均更合理,距離越近的點權重越大。距離越遠的點權重越小。
2 正態分布權重
正態分布顯然是一種可取的權重分配模式。
在圖形上。正態分布是一種鐘形曲線,越接近中心,取值越大,越遠離中心,取值越小。計算平均值的時候,我們僅僅須要將”中心點”作為原點,其它點依照其在正態曲線上的位置,分配權重。就能夠得到一個加權平均值。
3 高斯函數
上面的正態分布是一維的,圖像都是二維的。所以我們須要二維的正態分布。

正態分布的密度函數叫做”高斯函數”(Gaussian function)。它的一維形式是:

當中,μ是x的均值,σ是x的方差。由于計算平均值的時候。中心點就是原公式進一步推導,由于計算平均值的時候,中心點就是原點,所以μ等于0。

依據一維高斯函數。能夠推導得到二維高斯函數:

有了這個函數 ,就能夠計算每一個點的權重了。


4 權重矩陣
假定中心點的坐標是(0,0),那么距離它近期的8個點的坐標例如以下,則權重前的矩陣為:

為了計算權重矩陣,須要設定σ的值。假定σ=1.5,則模糊半徑為1的權重矩陣例如以下:

這9個點的權重總和等于0.4787147。假設僅僅計算這9個點的加權平均。還必須讓它們的權重之和等于1,因此上面9個值還要分別除以0.4787147,得到終于的權重矩陣。

5 計算高斯模糊

有了權重矩陣,就能夠計算高斯模糊的值了。

假設現有9個像素點。灰度值(0-255)例如以下:

每一個點乘以自己的權重值:

將這9個值加起來,就是中心點的高斯模糊的值。



對全部點反復這個過程,就得到了高斯模糊后的圖像。假設原圖是彩色圖片,能夠對RGB三個通道分別做高斯模糊。
6 實現代碼
此代碼為簡單的高斯模糊生成代碼,核心思想為取中心點像素值,依照步長為1 進行模糊。

(java代碼)

package filter; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO;public class GaussianBlur { /* 簡單的高斯模糊算法@param args@return void@see[類成員,類方法]*/public static void main(String[] args) throws IOException {//圖片讀取路徑String pathname="d:\\my\\1.jpg";BufferedImage img = ImageIO.read(new File(pathname));System.out.println(img);int height =img.getHeight();int width = img.getWidth();int[][]matrix = new int [3][3];int []values = new int [9];for (int i = 0; i < width; i++) {for (int j = 0; j < height; j++) {readPixel(img,i,j,values);//讀取圖像的像素值fillMatrix(matrix,values);//將圖像的像素值填充到矩陣中img.setRGB(i, j, avgMatrix(matrix));//又一次依照平均值來生成新的img,將依照RGB模型整數像素數組設置為圖像數據}}//圖片保存路徑String pathname1="d:\\my\\2.jpg";ImageIO.write(img, "jpeg", new File(pathname1));}//此函數的功能是將BuffedImage矩陣的像素值取出來public static void readPixel(BufferedImage img, int x, int y, int[] pixels) {int xStart = x-1;int yStart = y-1;int current = 0;for (int i = xStart; i <3+xStart ; i++) {for (int j = yStart; j <3+yStart;j++) {int tx=i;if (tx<0){tx =-tx;}else if (tx>=img.getWidth()){tx=x;}int ty=j;if (ty<0){ty =-ty;}else if (ty>=img.getHeight()){ty=y;}pixels[current++]= img.getRGB(tx, ty);}}}//此函數功能為給定像素值。將像素值填充入矩陣中去public static void fillMatrix(int[][] matrix, int ... values) {int filled = 0;for (int i = 0; i < matrix.length; i++) {int []x =matrix[i] ;for (int j = 0; j < x.length; j++) {x[j]=values[filled++];}}} //此函數的功能是將像素的矩陣進行高斯模糊,又一次生成一個模糊后的矩陣public static int avgMatrix(int[][] matrix) {int r=0;int g=0;int b=0;for (int i = 0; i < matrix.length; i++) {int[] x =matrix[i];for (int j = 0; j < x.length; j++) {if (j==1) {continue;}Color c = new Color(x[i]);r+= c.getRed();g+= c.getGreen();b+= c.getGreen();}}return new Color(r/8,g/8,b/8).getRGB(); } }

效果例如以下:高斯模糊前后對照圖


我們再用MATLAB 進行實現一下(用MATLAB 處理圖像既專業又方便,哈哈)
模糊又能夠稱為退化。我們能夠用直接從庫中調取。

無論是高斯模糊還是運動模糊非常easy實現地。。。

function ifbl = degrade(im, LEN, THETA, noisetype, M, V) %Converting the image to grayshade by eliminating hue and %saturation將圖像轉化為灰色來消除色相飽和度 if size(im, 3) == 3,im = rgb2gray(im); end%Converting to double imd = im2double(im);%Converting the image to frequency domain將圖像轉化到頻率域中 imf = fft2(imd);%Create PSF of degradation,濾波器卷積。逆時針角度THETA PSF = fspecial('gussian',LEN,THETA);%Convert psf to otf of desired size %OTF is Optical Transfer Function %fbl is blurred image in frequency domain,psf2otf是將點擴散函數轉換成光學轉換函數 OTF = psf2otf(PSF,size(im));%Blurring the image fbl = OTF.*imf;%Converting back to spatial domainf返回空間域 ifbl = abs(ifft2(fbl));%Checking if the image is in the range 0 to 1檢查圖像的范圍 for i = 1:size(ifbl, 1)for j = 1:size(ifbl, 2)if ifbl(i, j) >= 1ifbl(i, j) = 0.999999;endif ifbl(i, j) <= 0ifbl(i, j) = 0.000001;endend end %Adding noise if nargin>3if nargin==4 %using default valuesifbl = imnoise(ifbl, noisetype);elseif nargin==5 %specifying additional parameters explicitlyifbl = imnoise(ifbl, noisetype, M);elseif nargin==6 %specifying additional parameters explicitlyifbl = imnoise(ifbl, noisetype, M, V);end end

高斯模糊。默認的高斯噪聲均值m為0,方差var為0.01(參數能夠自己設置)

好了,基本能夠了,就是這個feel。。。

總結

以上是生活随笔為你收集整理的详析数字图像中高斯模糊理论及实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 理论片午午伦夜理片影院99 | 超碰888| 国产无遮挡又黄又爽 | 精品人妻一区二区三区日产 | 动漫av网站| 亚洲激情网 | 成人h动漫精品一区二区下载 | 黄色美女视频网站 | 久久久看 | avxx| 国产精品无码粉嫩小泬 | jizz18欧美18 | 欧美亚洲韩国 | 国产精品99久久久久 | 成av人片一区二区三区久久 | 国产成人不卡 | 深夜国产福利 | 欧美性高潮视频 | 日日色综合 | 美女搞黄视频网站 | 蜜乳av网站 | 超碰个人在线 | 色猫咪av | 欧美一区2区三区4区公司 | 精品国产免费无码久久久 | 欧美色图在线观看 | 国产手机在线播放 | 三级av在线播放 | 国产精品一级 | 50度灰在线| 岛国精品在线观看 | 天天射天天色天天干 | 国产在线天堂 | 天天看天天爽 | 日韩中文字幕第一页 | 日日摸日日碰 | 这里只有精品在线播放 | 国产裸体无遮挡 | 中文字幕一区二区三区夫目前犯 | 好吊一区二区三区视频 | 天天草比 | 五月婷婷综合激情网 | 欧美另类在线视频 | 亚洲久热 | 日韩在线播放视频 | 亚洲午夜在线视频 | 大桥未久av在线播放 | 国产一区二区三区中文字幕 | 波多野结衣在线视频免费观看 | 性色av无码久久一区二区三区 | 国内自拍2020| 青青福利视频 | 婷婷激情小说网 | 私人av| 少妇野外性xx老女人野外性xx | 亚洲最大在线观看 | 亚洲综合色吧 | 一道本在线播放 | 亚洲视频国产 | 国产精品久久久久久免费播放 | 人与禽性7777777 | 日韩毛片在线观看 | 一区二区三区四区中文字幕 | 亚洲理伦 | 老司机一区二区 | 日韩精彩视频 | 免费人妻精品一区二区三区 | 亚洲精品人人 | 午夜亚洲成人 | 午夜精品久久久久久久久久久久久 | 最近中文字幕在线观看视频 | 亚洲影院av| 99视频在线 | 亚洲春色在线观看 | 午夜精品在线播放 | 911看片| 日本免费一区二区三区 | 理伦毛片 | 曰女同女同中文字幕 | www.爱色av.com | 五月天丁香网 | 狠狠干夜夜干 | 亚洲激情自拍 | 欧美在线一级视频 | 国产av一区二区三区 | 欧美精品在线免费 | jizzjizz在线 | 夜夜操天天爽 | 都市激情中文字幕 | jizz日本18| 高清福利视频 | 无码国产精品一区二区色情男同 | 涩涩网站在线观看 | 毛片麻豆| 最好看的2019年中文视频 | 在线观看日韩中文字幕 | 久艹伊人 | 美妇湿透娇羞紧窄迎合 | 538在线精品视频 |