android 高斯模糊 c,c-如何在不使用任何内置高斯函数的情况下对图像进行高斯模糊处理?...
編寫幼稚的高斯模糊實際上很容易。 它的完成方式與任何其他卷積濾波器完全相同。 盒子濾波器和高斯濾波器之間的唯一區別是您使用的矩陣。
假設您有一個定義如下的圖像:
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
3x3框式濾波器矩陣定義如下:
0.111 0.111 0.111
0.111 0.111 0.111
0.111 0.111 0.111
要應用高斯模糊,請執行以下操作:
對于像素11,您需要加載像素0、1、2、10、11、12、20、21、22。
然后將像素0乘以3x3模糊濾鏡的左上部分。 像素1位于頂部中間,像素2位于右側頂部,像素10位于左側中間,依此類推。
然后將它們全部加在一起,并將結果寫入像素11。您可以看到,像素11現在是像素本身及其周圍像素的平均值。
邊緣情況確實變得更加復雜。 您為紋理邊緣的值使用什么值? 一種方法是將紙卷包裹到另一側。 這對于稍后平鋪的圖像看起來不錯。 另一種方法是將像素推入周圍的地方。
因此,對于左上角,您可以按以下方式放置樣本:
0 0 1
0 0 1
10 10 11
我希望您能看到如何輕松地將其擴展到大型過濾器內核(即5x5或9x9等)。
高斯濾波器和盒式濾波器的區別在于矩陣中的數字。 高斯濾波器使用行和列上的高斯分布。
例如,對于任意定義為的過濾器(即,這不是高斯的,但可能相距不遠)
0.1 0.8 0.1
第一列將是相同的,但會乘以上面一行的第一項。
0.01 0.8 0.1
0.08
0.01
第二列將是相同的,但是值將乘以上一行中的0.8(依此類推)。
0.01 0.08 0.01
0.08 0.64 0.08
0.01 0.08 0.01
將以上所有內容加在一起的結果應等于1。以上濾鏡與原始盒式濾鏡之間的差異是,寫入的末像素向中心像素(即位于該位置的像素)的權重要大得多 已經)。 之所以會發生模糊,是因為周圍的像素確實模糊了該像素,盡管不是那么多。 使用這種濾波器,您會得到模糊效果,但不會破壞太多的高頻信息(即,像素之間的顏色快速變化)。
這些過濾器可以做很多有趣的事情。 您可以通過從當前像素減去周圍像素來使用這種濾鏡進行邊緣檢測。 這樣只會留下真正的顏色(高頻)大變化。
編輯:一個5x5過濾器內核的定義與上面完全相同。
例如,如果您的行是0.1 0.2 0.4 0.2 0.1,那么如果您將它們中的每個值乘以第一項以形成一列,然后將每個值乘以第二項以形成第二列,依此類推,您將最終得到一個過濾器 的
0.01 0.02 0.04 0.02 0.01
0.02 0.04 0.08 0.04 0.02
0.04 0.08 0.16 0.08 0.04
0.02 0.04 0.08 0.04 0.02
0.01 0.02 0.04 0.02 0.01
采取一些任意位置,您可以看到位置0、0就是簡單的0.1 * 0.1。 位置0、2為0.1 * 0.4,位置2、2為0.4 * 0.4和位置1、2為0.2 * 0.4。
我希望能給您足夠的解釋。
總結
以上是生活随笔為你收集整理的android 高斯模糊 c,c-如何在不使用任何内置高斯函数的情况下对图像进行高斯模糊处理?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 招商银行信用卡申请被拒 常见原因有这四点
- 下一篇: 微信零钱通会损失本金吗 微信零钱通理财安