非局部均值滤波(磨皮)

news/2025/1/24 3:04:49/

note

根据掩膜区域与其他区域的相似程度来赋予掩膜区域像素权重

相似程度由均方差来衡量

code

/*\brief 矩阵求邻和\param type=1,列方向;type=2,行方向
*/
static void MyCumSum(Mat& src, Mat& res, int type) {if ((src.channels() > 1) || (res.channels() > 1)) {return;}src.copyTo(res);res.convertTo(res, CV_64FC1);if (type == 1) {for (int i = 0; i < src.cols; ++i) {for (int j = 1; j < src.rows; ++j) {res.at<double>(j,i) = res.at<double>(j-1,i) + res.at<double>(j,i);}}}else if (type == 2) {for (int i = 0; i < src.rows; ++i) {for (int j = 1; j < src.cols; ++j) {res.at<double>(i,j) = res.at<double>(i,j-1) + res.at<double>(i,j);}}}
}void GetWeight(Mat& distance, Mat& weight, double h) {for (int i = 0; i < weight.rows; ++i) {for (int j = 0; j < weight.cols; ++j) {double w = distance.at<double>(i,j);weight.at<double>(i,j) = exp(-1*w/h/h);}}
}void MyNonLocalMeanFilter(Mat& src, Mat& res, int ds = 2, int Ds = 5, double h = 10) {int srcType = src.type();if (srcType != CV_64FC1) {src.convertTo(src, CV_64FC1);res.convertTo(res, CV_64FC1);}int m = src.rows;int n = src.cols;int offset = ds+Ds;Mat paddedImg;copyMakeBorder(src, paddedImg, offset, offset, offset, offset, BORDER_REFLECT);	// 上下左右镜像复制矩阵边界Mat sumImage(m, n, CV_64FC1, Scalar(0));Mat sumWeight(m, n, CV_64FC1, Scalar(0));Mat maxWeight(m, n, CV_64FC1, Scalar(0));Rect rc;rc.x = Ds;rc.y = Ds;rc.width = m+ds;rc.height = n+ds;Mat image;	// 和搜索图比较使用的原图paddedImg(rc).copyTo(image);int M = image.rows;int N = image.cols;// 移动搜索框for (int r = -Ds; r <= Ds; r++) {for (int s = -Ds; s <= Ds; s++) {if (r == 0 && s == 0) {continue;}// 求差值积分图Rect recTmp;recTmp.x = Ds+s;recTmp.y = Ds+r;recTmp.width = n+ds;recTmp.height = m+ds;Mat wimage;	// 某个搜索框对应的搜索图paddedImg(recTmp).copyTo(wimage);Mat diff;	// 差值平方图subtract(image, wimage, diff);multiply(diff, diff, diff);Mat J;MyCumSum(diff, J, 1);	// 列方向求邻和MyCumSum(J, J, 2);	// 行方向求邻和recTmp.x = N-n;recTmp.y = M-m;recTmp.width = n;recTmp.height = m;Mat matTmp1;J(recTmp).copyTo(matTmp1);recTmp.x = 0;recTmp.y = 0;recTmp.width = n;recTmp.height = m;Mat matTmp2;J(recTmp).copyTo(matTmp2);recTmp.x = 0;recTmp.y = M-m;recTmp.width = n;recTmp.height = m;Mat matTmp3;J(recTmp).copyTo(matTmp3);recTmp.x = N-n;recTmp.y = 0;recTmp.width = n;recTmp.height = m;Mat matTmp4;J(recTmp).copyTo(matTmp4);// 计算距离Mat distance;add(matTmp1, matTmp2, distance);subtract(distance, matTmp3, distance);subtract(distance, matTmp4, distance);double var = (2*ds+1) * (2*ds+1);distance = distance / var;// 计算权重并获得单个偏移下的加权图像Mat weight(distance.rows, distance.cols, CV_64FC1, Scalar(0));GetWeight(distance, weight, h);recTmp.x = ds;recTmp.y = ds;recTmp.width = n;recTmp.height = m;Mat matTmp5;wimage(recTmp).copyTo(matTmp5);multiply(weight, matTmp5, matTmp5);add(sumImage, matTmp5, sumImage);add(sumWeight, weight, sumWeight);maxWeight = cv::max(maxWeight, weight);}}rc.x = ds;rc.y = ds;rc.width = n;rc.height = m;Mat matTmp;image(rc).copyTo(matTmp);multiply(maxWeight, matTmp, matTmp);add(sumImage, matTmp, sumImage);add(sumWeight, maxWeight, sumWeight);divide(sumImage, sumWeight, res);src.convertTo(src, srcType);res.convertTo(res, srcType);
}

test

 

 

文章来源:https://blog.csdn.net/weixin_45050132/article/details/131611145
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/news/789249.html

相关文章

R语言构建深度学习的框架:reticulate

构建虚拟环境进入R&#xff0c;安装reticulate包&#xff0c;该包建立R语言和python之间的关系。出现各种bug bug1: Error: Installation of TensorFlow not found 解决方案&#xff1a; 进入/home/u19111010045/.local/share/r-miniconda/envs/r-reticulate的r-reticulate环境…

国产半导体路在何方,瓦森纳与光刻机你了解多少

来源&#xff1a;PConline 光刻机&#xff08;Mask Aligner&#xff09;是制造微机电、光电、二极体大规模集成电路的重要设备。一台光刻机主要包括了曝光系统和对准系统两个部分。光刻机能够利用曝光系统发射出的紫外线通过模版去除晶圆表面的保护膜&#xff0c;将器件或电路结…

国产4纳米量产,吓坏了海外光刻机行业,日本和ASML赶紧示好

在中国芯片企业宣布4纳米小芯片量产后&#xff0c;光刻机行业的ASML和日本光刻机都纷纷向中国示好&#xff0c;其中ASML更是在2022年底加快了对中国出口光刻机的进度&#xff0c;再次证明了只要中国芯片技术取得突破&#xff0c;海外芯片行业就会迅速低头示好。 美国以为只要限…

ASML对光刻机销售留了后手,因为中国或已突破,外媒:挡不住了

在ASML追随美国的脚步停止对中国出售14纳米光刻机之后&#xff0c;其实ASML还留了后手&#xff0c;那就是它表示仍然可以对中国出售28纳米的浸润式光刻机&#xff0c;而这款光刻机其实也可用于14纳米工艺生产&#xff0c;只不过需要多重曝光技术&#xff0c;生产成本较高。 ASM…

ASML再遭重击,10nm先进工艺无需光刻机,为中国芯片指明新方向

近日日本方面报道指东京理科大学已将NIL工艺已突破到10nm以下&#xff0c;这是全球首款无需光刻机的芯片制造工艺&#xff0c;代表着先进工艺的另一条路线&#xff0c;对于以光刻机为主业的ASML来说无疑是重大的打击。 如今ASML在光刻机市场一家独大&#xff0c;占有光刻机市场…

在日本之后,中国也发布新型光刻机,ASML加快对中国出口光刻机

由于美国的影响&#xff0c;ASML对中国出售光刻机一直都在摇摆之中&#xff0c;不过2022年底至少有三家中国芯片企业获得ASML的光刻机&#xff0c;显示出ASML的态度再次发生变化&#xff0c;导致如此结果或许在于中国近期宣布的新型光刻机。 一、开辟芯片制造新技术 说到绕开AS…

为什么最好的光刻机来自荷兰,而不是芯片大国美国?

要知道为什么最好的光刻机来自荷兰&#xff0c;而不是美国&#xff0c;得从半导体发展的三个历史阶段说起。 前言 在20世纪70年代初&#xff0c;荷兰飞利浦研发实验室的工程师们制造了一台机器&#xff1a;一台试图像印钞票一样合法赚钱的机器。但他们当时并没有意识到自己创造…

垄断市场的ASML新一代EUV光刻机价格翻两倍,台积电等准备大出血

据外媒报道指光刻机巨头ASML的新一代High-NA EUV设备订价约4亿美元&#xff0c;折合27亿人民币&#xff0c;较上一代的EUV光刻机提价两倍多&#xff0c;上一代EUV光刻机售价大约1.2亿美元&#xff0c;台积电等恐怕要再度大出血了。 目前的光刻机市场几乎已被ASML垄断&#xff0…