一、平滑處理
??平滑處理也稱為模糊處理,是一種簡單且使用頻率很高的圖像處理方法,平滑處理的用途有很多,最常見的是用來減少圖像上的噪點(diǎn)或者失真。在涉及到降低圖像分辨率時(shí),平滑處理是非常好用的方法。
二、圖像濾波
??圖像濾波指的是在盡量保留圖像細(xì)節(jié)特征的條件下對圖像的噪音進(jìn)行抑制,是圖像預(yù)處理中不可缺少的操作,其處理效果的好壞將會直接影響到后續(xù)圖像處理和分析的有效性和可靠性。消除圖像中的噪聲成分叫做圖像的平滑化或?yàn)V波操作。信號或圖像的能量大部分集中在幅度譜的低頻或中頻段,而在高頻段,有用的信息經(jīng)常會被噪聲淹沒,因此一個(gè)能降低高頻成分幅度的濾波器就能減弱噪聲的影響。
??圖像濾波有兩個(gè)目的: 一是抽出對象的特征作為圖像識別的特征模式;另一個(gè)是為了適應(yīng)圖像處理的要求,消除圖像數(shù)字化時(shí)所混入的噪聲。
??對濾波處理的兩個(gè)要求:一是不能損壞圖像邊緣及輪廓等重要信息;二是使得圖像清晰視覺效果好。
三、鄰域算子與線性鄰域?yàn)V波
??鄰域算子是利用給定像素周圍的像素值來決定此像素的最終輸出值的一種算子。線性鄰域?yàn)V波就是一種常用的鄰域算子,像素的輸出值取決于輸入像素的加權(quán)和。鄰域算子除了用于局部色調(diào)調(diào)整之外,還可以用于圖像濾波,實(shí)現(xiàn)圖像的平滑和銳化,圖像邊緣增強(qiáng)或圖像噪聲的去除。線性鄰域算子,用不同的權(quán)重去結(jié)合一個(gè)小鄰域內(nèi)的像素,來得到應(yīng)有的處理效果。
??鄰域算子值利用給定像素周圍像素的值決定此像素的最終輸出。如圖左邊圖像與中間圖像卷積生成右邊圖像。目標(biāo)圖像中綠色的像素由原圖像中藍(lán)色標(biāo)記的像素計(jì)算得到。
??線性濾波處理的輸出像素值是輸入像素值的加權(quán)和,其中的 h 為加權(quán)系數(shù)也就是濾波系數(shù)。
??在 OpenCV 中提供了常見的三種線性濾波操作分別是方框?yàn)V波,均值濾波,高斯濾波,接下來我們分別了解一下。
四、方框?yàn)V波
void boxFilter(InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-1, -1), boolnormalize=true, int borderType=BORDEX_DEFAULT)
??其中,第一個(gè)參數(shù)表示輸入的原圖像,第二個(gè)參數(shù)表示目標(biāo)圖像,需要和原圖像一樣尺寸和類型,第三個(gè)參數(shù)表示輸出圖像的深度,-1代表使用原深度,即src.depth(),第四個(gè)參數(shù)表示 Size 類型的 ksize ,內(nèi)核的大小。一般用 Size(w, h) 表示內(nèi)核的大小,其中 w 為像素寬度,h 為像素的高度。Size(3, 3)的核大小。第五個(gè)參數(shù)表示錨點(diǎn)(平滑的那個(gè)點(diǎn))。默認(rèn)是 Point(-1, -1)。如果這個(gè)點(diǎn)的坐標(biāo)是負(fù)值的話,就取核的中心為錨點(diǎn)。第六個(gè)參數(shù)六表示內(nèi)核是否被其區(qū)域歸一化了,第七個(gè)參數(shù)表示用于推斷圖像外部像素的某種邊界模式。
代碼演示
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main()
{
// 讀取輸入圖像
Mat src = imread("D://cc.jpg", IMREAD_COLOR);
if (src.empty())
{
std::cout << "無法讀取圖像" << std::endl;
return -1;
}
// 創(chuàng)建輸出矩陣
Mat dst;
// 應(yīng)用方框?yàn)V波器
int ddepth = -1; // 使用與輸入圖像相同的深度
Size ksize(3, 3); // 內(nèi)核的大小
Point anchor(-1, -1); // 內(nèi)核中的錨點(diǎn)
bool normalize = true; // 歸一化內(nèi)核
int borderType = BORDER_DEFAULT; // 邊界類型
boxFilter(src, dst, ddepth, ksize, anchor, normalize, borderType);
// 顯示結(jié)果
imshow("輸入", src);
imshow("輸出", dst);
waitKey(0);
return 0;
}
- ?? 個(gè)人簡介:CSDN「博客新星」TOP 10 , C/C++ 領(lǐng)域新星創(chuàng)作者
- ?? 作 ?? 者:錫蘭_CC ??
- ?? 專 ?? 欄:【OpenCV ? c++】計(jì)算機(jī)視覺
- ?? 若有幫助,還請關(guān)注?點(diǎn)贊?收藏,不行的話我再努努力??????
其他:文章來源:http://www.zghlxwxcb.cn/news/detail-841656.html
更多專欄訂閱推薦:文章來源地址http://www.zghlxwxcb.cn/news/detail-841656.html
- ?? 【開卷數(shù)據(jù)結(jié)構(gòu)】
- ?? 【備戰(zhàn)藍(lán)橋,沖擊省一】
- ??? ?從零開始的 c++ 之旅
- ?? 【OpenCV ? c++】計(jì)算機(jī)視覺
到了這里,關(guān)于【OpenCV ? c++】圖像平滑處理(1) —— 線性濾波的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!