浙江纸巾包装设计公司,酒店seo是什么意思,建设网站的目的和功能定位,crm管理系统有哪些1、引言 均值滤波、方框滤波、高斯滤波#xff0c;都是线性滤波方式。由于线性滤波的结果是所有像素值的线性组合#xff0c;因此含有噪声的像素也会被考虑进去#xff0c;噪声不会被消除#xff0c;而是以更柔和的方式存在。这时使用非线性滤波效果可能会更好。中值滤波是…1、引言 均值滤波、方框滤波、高斯滤波都是线性滤波方式。由于线性滤波的结果是所有像素值的线性组合因此含有噪声的像素也会被考虑进去噪声不会被消除而是以更柔和的方式存在。这时使用非线性滤波效果可能会更好。中值滤波是一种非线性滤波方式不再采用加权求均值的方式计算滤波结果基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替让周围的像素值接近的真实值从而消除孤立的噪声点。
优缺点中值滤波可以有效的去除斑点和椒盐噪声。但是效率低其运算时间 为均值滤波的五倍以上
2、中值滤波过程 首先我们先取一个nxn的滤波核该核是一个空核核中不在有权重等数字把滤波核放在图像上滑动每滑动到一个位置就把核覆盖下的所有像素值进行排序然后取排序后中间的像素值替换被核中心覆盖下的原图像像素值。下面演示下滤波过程。
先取一个3x3的空核 把3x3的空核放在原图像上进行滑动 计算被核覆盖下的像素中值以上图核放在左上角为例 先给所有像素进行排序正序和逆序都可这里使用正序 202428354759687999
由排序可知中间值为47 最后把中间值替换被核中心覆盖的像素值即68会重新赋值为47随着核滑动便可依次计算被核中心覆盖的像素值的中值核中心滑动过的像素如下图阴影部分。
3、opencv中值滤波函数使用
void cv::medianBlur(InputArray src,OutputArray dst,int ksize
)src原图像可以是单通道三通道和四通道数据类型与滤波器的尺寸相关当滤波器尺寸为3或5时图像可以是CV 8UCV 16U或CV 32F类型对于较大尺寸的滤波器数据类型只能是CV 8U dst滤波后的图像 ksize滤波核大小必须是奇数这样才有核中心
对原图分别执行3x3和9x9滤波实现效果如下 原图 左边是3x3滤波右边是9x9滤波
4、滤波核根据图像自适应调整大小 我们在调用medianBlur时需要手动传入一个滤波核大小下面的一个demo介绍了核的大小根据局部邻域的均值和标准差进行自适应调整
#include opencv2/opencv.hppcv::Mat adaptiveMedianBlur(const cv::Mat src, int maxWindowSize) {cv::Mat result src.clone();int numChannels src.channels();for (int y maxWindowSize / 2; y src.rows - maxWindowSize / 2; y) {for (int x maxWindowSize / 2; x src.cols - maxWindowSize / 2; x) {int windowSize 3; // 初始核大小while (windowSize maxWindowSize) {// 提取局部邻域cv::Mat region src(cv::Range(y - windowSize / 2, y windowSize / 2 1),cv::Range(x - windowSize / 2, x windowSize / 2 1));// 计算标准差cv::Scalar mean, stddev;cv::meanStdDev(region, mean, stddev);// 中值滤波if (numChannels 1 src.atuchar(y, x) mean[0] stddev[0] * 0.5) {// 单通道图像中值滤波cv::Mat subRegion result(cv::Range(y - windowSize / 2, y windowSize / 2 1),cv::Range(x - windowSize / 2, x windowSize / 2 1));cv::medianBlur(region, subRegion, windowSize);break;} else if (numChannels 3 src.atcv::Vec3b(y, x)[0] mean[0] stddev[0] * 0.5 src.atcv::Vec3b(y, x)[1] mean[1] stddev[1] * 0.5 src.atcv::Vec3b(y, x)[2] mean[2] stddev[2] * 0.5) {// 三通道图像中值滤波cv::Mat subRegion result(cv::Range(y - windowSize / 2, y windowSize / 2 1),cv::Range(x - windowSize / 2, x windowSize / 2 1));cv::medianBlur(region, subRegion, windowSize);break;} else {// 增大核大小windowSize 2;if (windowSize maxWindowSize) {break;}}}}}return result;
}int main() {// 读取图像cv::Mat image cv::imread(input_image.jpg, cv::IMREAD_GRAYSCALE);// 应用自适应中值滤波cv::Mat result adaptiveMedianBlur(image, 11);// 显示原始图像和处理后的图像cv::imshow(Original Image, image);cv::imshow(Adaptive Median Blur Image, result);cv::waitKey(0);cv::destroyAllWindows();return 0;
}
下面对代码做一些解释 1函数需要传入一个原图像和一个滤波核的上限表示该图像做中值滤波时最大只能用maxWindowSize 2最上面两层for循环遍历核中心扫过的像素例如一个8x8图像被maxWindowSize 5x5的核扫过的区域如下阴影部分 这两层循环确保我们只处理在图像内部且不会越界的像素。这是为了确保局部邻域的提取和处理都在图像内部进行
3 根据当前核大小提取局部邻域 cv::Mat region src(cv::Range(y - windowSize / 2, y windowSize / 2 1), cv::Range(x - windowSize / 2, x windowSize / 2 1)); 代码以被最大核扫过的每个像素分别为当前核的一个中心提取一个局部邻域比如当前核为3x3第一个被扫过像素的局部邻域如下 4计算邻域的均值和标准差 5 if (src.at(y, x) mean[0] stddev[0] * 0.5) 这个条件的意思是如果当前像素 (y, x) 的值小于局部邻域的平均灰度值加上标准差的一半就执行中值滤波。这样的判断条件旨在处理相对较小的像素值因为在图像中的边缘或包含细节的区域这些值可能代表着重要的信息。在这些情况下使用中值滤波有助于更好地保留细节。如果像素值相对较大可能处于较均匀的区域就不执行中值滤波以免过度平滑图像。
加上标准差的一半的目的是提高容错性使得判断更加灵活。这个设计的理念是在图像中的一些相对较暗的区域或包含细节的区域由于灰度值的波动可能出现一些像素的值略低于整体平均值。通过引入标准差的一半可以允许更大的变化范围从而更好地适应图像的局部特征。当然也可以把标准差的一半换成一个固定的值具体可以根据实验来调整。
下面是带三通道的情况
cv::Mat adaptiveMedianBlur1(const cv::Mat src, int maxWindowSize) {cv::Mat result src.clone();int numChannels src.channels();for (int y maxWindowSize / 2; y src.rows - maxWindowSize / 2; y) {for (int x maxWindowSize / 2; x src.cols - maxWindowSize / 2; x) {int windowSize 3; // 初始核大小while (windowSize maxWindowSize) {// 提取局部邻域cv::Mat region src(cv::Range(y - windowSize / 2, y windowSize / 2 1),cv::Range(x - windowSize / 2, x windowSize / 2 1));// 计算标准差cv::Scalar mean, stddev;cv::meanStdDev(region, mean, stddev);// 中值滤波if (numChannels 1 src.atuchar(y, x) mean[0] stddev[0] * 0.5) {// 单通道图像中值滤波cv::Mat subRegion result(cv::Range(y - windowSize / 2, y windowSize / 2 1),cv::Range(x - windowSize / 2, x windowSize / 2 1));cv::medianBlur(region, subRegion, windowSize);break;}else if (numChannels 3 src.atcv::Vec3b(y, x)[0] mean[0] stddev[0] * 0.5 src.atcv::Vec3b(y, x)[1] mean[1] stddev[1] * 0.5 src.atcv::Vec3b(y, x)[2] mean[2] stddev[2] * 0.5) {// 三通道图像中值滤波cv::Mat subRegion result(cv::Range(y - windowSize / 2, y windowSize / 2 1),cv::Range(x - windowSize / 2, x windowSize / 2 1));cv::medianBlur(region, subRegion, windowSize);break;}else {// 增大核大小windowSize 2;if (windowSize maxWindowSize) {break;}}}}}return result;
} 文章转载自: http://www.morning.lqffg.cn.gov.cn.lqffg.cn http://www.morning.krjyq.cn.gov.cn.krjyq.cn http://www.morning.rshs.cn.gov.cn.rshs.cn http://www.morning.qcygd.cn.gov.cn.qcygd.cn http://www.morning.kdldx.cn.gov.cn.kdldx.cn http://www.morning.grbgn.cn.gov.cn.grbgn.cn http://www.morning.myxps.cn.gov.cn.myxps.cn http://www.morning.qhjkz.cn.gov.cn.qhjkz.cn http://www.morning.dfrenti.com.gov.cn.dfrenti.com http://www.morning.cgdyx.cn.gov.cn.cgdyx.cn http://www.morning.bqqzg.cn.gov.cn.bqqzg.cn http://www.morning.rjxwq.cn.gov.cn.rjxwq.cn http://www.morning.qmbtn.cn.gov.cn.qmbtn.cn http://www.morning.fbylq.cn.gov.cn.fbylq.cn http://www.morning.ltpzr.cn.gov.cn.ltpzr.cn http://www.morning.ptzf.cn.gov.cn.ptzf.cn http://www.morning.dpwcl.cn.gov.cn.dpwcl.cn http://www.morning.ruifund.com.gov.cn.ruifund.com http://www.morning.rbsxf.cn.gov.cn.rbsxf.cn http://www.morning.tyjp.cn.gov.cn.tyjp.cn http://www.morning.nmnhs.cn.gov.cn.nmnhs.cn http://www.morning.rbqlw.cn.gov.cn.rbqlw.cn http://www.morning.gwyml.cn.gov.cn.gwyml.cn http://www.morning.mkxxk.cn.gov.cn.mkxxk.cn http://www.morning.qrhh.cn.gov.cn.qrhh.cn http://www.morning.hkgcx.cn.gov.cn.hkgcx.cn http://www.morning.dxxnq.cn.gov.cn.dxxnq.cn http://www.morning.nfbkz.cn.gov.cn.nfbkz.cn http://www.morning.pmnn.cn.gov.cn.pmnn.cn http://www.morning.wkpfm.cn.gov.cn.wkpfm.cn http://www.morning.ygkq.cn.gov.cn.ygkq.cn http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn http://www.morning.lzqdl.cn.gov.cn.lzqdl.cn http://www.morning.npxht.cn.gov.cn.npxht.cn http://www.morning.tqsnd.cn.gov.cn.tqsnd.cn http://www.morning.coatingonline.com.cn.gov.cn.coatingonline.com.cn http://www.morning.yrctp.cn.gov.cn.yrctp.cn http://www.morning.fsnhz.cn.gov.cn.fsnhz.cn http://www.morning.rtryr.cn.gov.cn.rtryr.cn http://www.morning.ghryk.cn.gov.cn.ghryk.cn http://www.morning.qrmyd.cn.gov.cn.qrmyd.cn http://www.morning.hxljc.cn.gov.cn.hxljc.cn http://www.morning.rqlqd.cn.gov.cn.rqlqd.cn http://www.morning.rhnn.cn.gov.cn.rhnn.cn http://www.morning.c7627.cn.gov.cn.c7627.cn http://www.morning.yrmpz.cn.gov.cn.yrmpz.cn http://www.morning.ptqbt.cn.gov.cn.ptqbt.cn http://www.morning.rszyf.cn.gov.cn.rszyf.cn http://www.morning.nzsx.cn.gov.cn.nzsx.cn http://www.morning.yrlfy.cn.gov.cn.yrlfy.cn http://www.morning.gfkb.cn.gov.cn.gfkb.cn http://www.morning.yfmwg.cn.gov.cn.yfmwg.cn http://www.morning.cxnyg.cn.gov.cn.cxnyg.cn http://www.morning.pjxw.cn.gov.cn.pjxw.cn http://www.morning.nkjpl.cn.gov.cn.nkjpl.cn http://www.morning.qtyfb.cn.gov.cn.qtyfb.cn http://www.morning.jstggt.cn.gov.cn.jstggt.cn http://www.morning.mpxbl.cn.gov.cn.mpxbl.cn http://www.morning.llsrg.cn.gov.cn.llsrg.cn http://www.morning.rbnp.cn.gov.cn.rbnp.cn http://www.morning.frmmp.cn.gov.cn.frmmp.cn http://www.morning.dfmjm.cn.gov.cn.dfmjm.cn http://www.morning.iiunion.com.gov.cn.iiunion.com http://www.morning.gfkb.cn.gov.cn.gfkb.cn http://www.morning.xxlz.cn.gov.cn.xxlz.cn http://www.morning.lpmjr.cn.gov.cn.lpmjr.cn http://www.morning.jcxzq.cn.gov.cn.jcxzq.cn http://www.morning.bwjws.cn.gov.cn.bwjws.cn http://www.morning.hlshn.cn.gov.cn.hlshn.cn http://www.morning.rxfgh.cn.gov.cn.rxfgh.cn http://www.morning.nbsbn.cn.gov.cn.nbsbn.cn http://www.morning.cfhwn.cn.gov.cn.cfhwn.cn http://www.morning.jltmb.cn.gov.cn.jltmb.cn http://www.morning.zcqbx.cn.gov.cn.zcqbx.cn http://www.morning.yqqxj1.cn.gov.cn.yqqxj1.cn http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn http://www.morning.qcymf.cn.gov.cn.qcymf.cn http://www.morning.pfkrw.cn.gov.cn.pfkrw.cn http://www.morning.qwpyf.cn.gov.cn.qwpyf.cn http://www.morning.youprogrammer.cn.gov.cn.youprogrammer.cn