簡體   English   中英

OpenCV filter2D:僅過濾矩陣/圖像的一部分

[英]OpenCV filter2D: Filtering only part of the matrix/image

我遇到了以下問題。 我需要使用線性過濾器過濾矩陣/圖像,但我想只過濾那些周圍有足夠數量的鄰居的像素(根據內核大小)。 具體地說,使用5x5內核過濾32x32圖像的結果應該是28x28大小。
是否可以使用OpenCV內置函數以相對簡單的方式進行此類處理?

int kernel_size = 3;
cv::Mat in_img, out_img;
cv::Mat kernel = Mat::ones( kernel_size, kernel_size, CV_32F )/ (float)(kernel_size*kernel_size);       
cv::filter2D(in_img, out_img, -1 , kernel); //filtering

cv::Size size = in_img.size();
cv::Rect roi(kernel_size, kernel_size,size.width - 2*kernel_size, size.height - 2*kernel_size);
cv::Mat cropped = in_img(roi).clone(); //cropping

在opencv中有一個名為cv :: filter2D的函數,但輸出圖像的大小與輸入圖像的大小相同(過濾期間填充為零)。 還有另一個名為vxl的圖像/數學庫,在那里你可以找到一個適合你要求的卷積算子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM