matlab imboxfilt,數字圖像處理中的Box Filter

圖像處理中常常會聽到盒子濾波(Box Filter)這個概念。A boxfilter is also called a mean filter。也就是說,Box Filter對當前像素及其相鄰的的像素點都一視同仁,統一進行平均處理,這樣就可以濾去圖像中的噪聲。而在實踐中,我們可以用基於模板的卷積操作來實現Box Filter,Box Filter的模板中所有系數都取相同的值。下圖給出了對圖像進行Box Filter的效果以及其所使用的模板。

604f2e4aceea67ab2915351e888f767c.jpe

在MATLAB中,用於實現盒子濾波的主要函數是imboxfilt(),它的調用形式

B = imboxfilt(A, filterSize, Name, Value)

其中,A待處理的圖像,filterSize是所采用模板的尺寸,默認大小為3*3,Name和Value是MATLAB中參數名與參數值對兒(必須成對使用),它有很多具體的取值也可以缺省。例如當Name取值為'Padding'時,對應的Value就表示原圖像的邊界填充方式。因為原圖像四條邊上的像素之鄰域是不完整的。我們無法直接算出邊界上的像素濾波處理后應該是多少。於是我們要先給原圖像加上一個外圈像素,並以此為基礎再來計算原圖中四條邊上像素濾波后的結果。下表給出了Value的可取值類表,其中'replicate'是默認值。

39916b791ac90a52b4101c0bff5b9f62.jpe

最后我們來看一個例子。假設有下面這樣一個矩陣:

matrix = 1 2 1 4 3 1 2 2 3 4 5 7 6 8 9 5 7 6 8 8 5 6 7 8 9

然后我們利用imboxfilt()函數來對圖

像進行盒子濾波(注意我們將外圈元素填為0):

>> B = imboxfilt(matix,'Padding',0)B = 0.6667 1.0000 1.5556 1.8889 1.5556 2.0000 3.0000 3.8889 4.4444 3.4444 3.0000 4.5556 5.4444 6.0000 4.4444 3.8889 6.0000 7.0000 7.6667 5.5556 2.5556 4.0000 4.6667 5.1111 3.6667

可以人工驗證一下計算的結果:

對於結果矩陣中第一行第一列的元素值 (1+2+1+2+0+0+0+0+0)/9=0.6667

對於結果矩陣中第二行第二列的元素值 (1+2+1+1+2+2+5+7+6)/9=3.0000

當然,在實際圖像處理中,我們常常需要保證結果是一個整數值(因為像素的分為是0~255中的整數),這時可以用round()函數來進行四舍五入(注意我們變換了一個參數值):

>> B = round(imboxfilt(matix,'Padding','replicate'))B = 1 1 2 3 3 3 3 4 4 5 4 5 5 6 7 6 6 7 8 8 5 6 7 8 8

(本文完)

604d135536f60ffe021d42e149716583.jpe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值