您现在的位置: > 行业杂谈 > 香港vps中图像处理的一些基本算法
香港vps中图像处理的一些基本算法
鉴于一些实际应用的需要,我们为大家介绍一些香港vps中图像处理的基本算法,例如边界提取、孔洞填充、连通分量的提取、凸壳算法等等,今天为香港vps的使用者介绍以上算法的基本原理以及部分算法的基本实现代码,相信通过对于这些算法的熟练掌握,读者能够实现对于普通的图像应用问题的简单处理,从而为以后在做更加大型的项目的时候打好铺垫。
现在小编分别为大家介绍一下边界提取、孔洞填充、连通分量的提取、凸壳等算法的实现原理,首先我们为大家介绍一下边界提取的原理,图像边界提取算法是通过图像的腐蚀来实现的,首先先对原先的图像进行腐蚀,在这里我们将腐蚀后的图像定义为B,将原先的图像定义为A,利用A - B我们便可以得到我们想要的边界轮廓,对于图像的孔洞填充,首先我们先定义孔洞的含义:孔洞就是由前景像素相连接的边界所包围的一个背景区域,在这里我们另A表示一个集合,里面的元素都是包含孔洞的边界,我们只要给定孔洞中的一个点,就可以通过膨胀操作实现对于孔洞的填充。下面来介绍一下连通分量的提取:所谓的连通分量是指在这一个分量之中,任意两个像素点之间彼此都是相互可达的,他们构成一个统一的集合,从图像中提取连通分量是许多自动图像分析应用中的核心,我们一般通过一个合适的结构元通过反复的迭代过程实现这一算法,凸壳算法的实现相对就稍微复杂一些,首先我们来定义一下凸壳的定义:如果在集合A内链接任意两个点的直线段都在A的内部,则称集合A是凸形的,我们可以利用不同的结构元对原图像进行反复的做击中操作,最后将不同结构元所做的击中操作的结果的并集作为最后所得到的关于原图像的凸壳。
基于这样的特点,现在我们给出他们的具体实现代码:
图像边界提取的代码实现:
cvErode( tempImage, tempImage, element, 1); // 侵蚀,磨蚀,直接调用相应的opencv的函数来实现。
cvReleaseStructuringElement( &element ); //通过两个for循环实现结构元。
for(int i = 0; i < tempImage->height; i++){
for(int j = 0; j < tempImage->width; j++){
pDestImg->imageData[pDestImg->widthStepj //利用指针操作实现提取相应的分量。
pDestImg->imageData[pDestImg->widthStep tempImage->imageData[tempImage->widthStep * i + j ];
图像孔洞填充的代码实现:
void fillHole(const Mat srcBw, Mat &dstBw)
{
Size m_Size = srcBw.size(); // 确定输入的图片的大小,并用他来生成一个新的实例。
Mat Temp=Mat::zeros(m_Size.height+2,m_Size.width+2,srcBw.type());//延展图像
srcBw.copyTo(Temp(Range(1, m_Size.height + 1), Range(1, m_Size.width + 1)));
cv::floodFill(Temp, Point(0, 0), Scalar(255));
Mat cutImg;//裁剪延展的图像
Temp(Range(1, m_Size.height + 1), Range(1, m_Size.width + 1)).copyTo(cutImg);
dstBw = srcBw | (~cutImg);
}
图像的边界提取、孔洞填充、连通分量的提取、凸壳算法的基本原理以及相应的代码实现小编就带领大家介绍到这里了。
如果您还有什么不明确或者是不懂的地方,欢迎来新世界主机咨询了解,详情请咨询QQ: TEL: 。我们必将竭诚为您服务。
本文地址:
http://xgvps.com/xingyezatan/436.htm
版权所有*转载时必须以链接形式注明作者和原始出处
Copyright © 2001-2020 香港vps 网址:http://xgvps.com/
香港vps、香港服务器、香港vps主机、香港vps哪里好、就到香港新世界vps主机。
信息来源于网络以及网友投稿,如侵犯了您的权益,请及时通知本站。