图形算法与实战:5.图像边缘羽化专题(2)腐蚀渐层方法羽化

我记得有种猫咪的毛发特征分类是金渐层,还是狗来着?记大不清了。

图像羽化专题-腐蚀渐层方法羽化

1. 图像处理前后结果展示

图像处理前

图像处理后

2. 腐蚀渐层羽化

腐蚀渐层羽化方法,本质是不同腐蚀图像的加权和。可使用相同权值,以不同大小的内核腐蚀,并叠加10次,权值为0.1;以不同大小的内核腐蚀,并叠加5次,权值为0.2;以不同大小的内核腐蚀并叠加4次,权值为0.25。

以腐蚀10次,并叠加10次为例。因为腐蚀内核大小不同,腐蚀程度不同,原图中每个泡泡的直径就不同,因为腐蚀了10次,所以权值就为0.1,多张与权值相乘之后的图像相加就会呈现中心亮、边缘模糊的效果。

3. 代码展示

#include <cv.h>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp> 
#include <opencv2/core.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc.hpp> 
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <stdio.h>

#include <string>
#include <cstring>
#include <vector>
#include <time.h>  
#include <windows.h>
#include <iostream>
#include <algorithm>

using namespace std;
using namespace cv;

void main()
{
	Mat src;
	src= imread("C:\\Users\\DELL\\Desktop\\bubble.jpg");
 	Mat dst;
	cvtColor(src, dst, CV_BGR2GRAY);

	int erode_size = 3;
	Mat kernel;

	Mat tempErode = Mat::zeros(dst.size(), dst.type());
	Mat tempDst = Mat::zeros(dst.size(), dst.type());

	int erodeTime = 10;
	for (int i=1;i< erodeTime;i++)
	{
		kernel = getStructuringElement(MORPH_RECT, Size(2*i* erode_size + 1, 2 * i* erode_size + 1));
		erode(dst, tempErode, kernel);
		tempDst = tempDst + 0.1*tempErode;
	}
	dst = 0;
	dst = tempDst + 0.1*dst;
	imwrite("C:\\Users\\DELL\\Desktop\\erodeBubble.jpg", dst);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值