图像分割--金字塔分割算法
来源:互联网 发布:gta5神作 知乎 编辑:程序博客网 时间:2024/04/30 07:48
PyrSegmentation
用金字塔实现图像分割
void cvPyrSegmentation( IplImage* src, IplImage* dst, CvMemStorage* storage, CvSeq** comp, int level, double threshold1, double threshold2 );
src
输入图像.
dst
输出图像.
storage
Storage: 存储连通部件的序列结果
comp
分割部件的输出序列指针 components.
level
建立金字塔的最大层数
threshold1
建立连接的错误阈值
threshold2
分割簇的错误阈值
函数 cvPyrSegmentation 实现了金字塔方法的图像分割。金字塔建立到 level 指定的最大层数。如果 p(c(a),c(b))<threshold1,则在层 i 的象素点 a 和它的相邻层的父亲象素 b 之间的连接被建立起来,
定义好连接部件后,它们被加入到某些簇中。如果p(c(A),c(B))<threshold2,则任何两个分割 A 和 B 属于同一簇。
如果输入图像只有一个通道,那么
p(c1,c2)=|c1-c2|.
如果输入图像有单个通道(红、绿、兰),那幺
p(c1,c2)=0,3·(c1r-c2r)+0,59·(c1g-c2g)+0,11·(c1b-c2b) .
用金字塔实现图像分割
void cvPyrSegmentation( IplImage* src, IplImage* dst, CvMemStorage* storage, CvSeq** comp, int level, double threshold1, double threshold2 );
src
输入图像.
dst
输出图像.
storage
Storage: 存储连通部件的序列结果
comp
分割部件的输出序列指针 components.
level
建立金字塔的最大层数
threshold1
建立连接的错误阈值
threshold2
分割簇的错误阈值
函数 cvPyrSegmentation 实现了金字塔方法的图像分割。金字塔建立到 level 指定的最大层数。如果 p(c(a),c(b))<threshold1,则在层 i 的象素点 a 和它的相邻层的父亲象素 b 之间的连接被建立起来,
定义好连接部件后,它们被加入到某些簇中。如果p(c(A),c(B))<threshold2,则任何两个分割 A 和 B 属于同一簇。
如果输入图像只有一个通道,那么
p(c1,c2)=|c1-c2|.
如果输入图像有单个通道(红、绿、兰),那幺
p(c1,c2)=0,3·(c1r-c2r)+0,59·(c1g-c2g)+0,11·(c1b-c2b) .
每一个簇可以有多个连接部件。图像 src 和 dst 应该是 8-比特、单通道 或 3-通道图像,且大小一样
实验实例:
#include <iostream> #include<opencv2\highgui\highgui.hpp>#include<opencv2\opencv.hpp>#include<opencv2\legacy\legacy.hpp>//cvPyrSegmentation函数要加这个头文件//#pragma comment(lib, "opencv_legacy249d.lib") using namespace std; using namespace cv; void cvPyr( IplImage* src, IplImage* dst);static void ShowHelpText() ;int main(int argc, char** argv){IplImage* src, *dst;CvMemStorage* storage=cvCreateMemStorage(0);ShowHelpText();if (argc==2 && (src=cvLoadImage(argv[1],-1))!=0){return -1;}else{src=cvLoadImage("lena.jpg",1);}dst = cvCreateImage( cvGetSize(src), src->depth, src->nChannels); cvPyr( src, dst); // Create a named window with a the name of the file. cvNamedWindow( "src", 1 ); // Show the image in the named windowcvShowImage( "src", src );cvShowImage( "dst", dst ); // Press any key to exit. cvWaitKey(0); // Clean up and don’t be piggies cvDestroyWindow( "src" ); cvReleaseImage( &src ); cvDestroyWindow( "dst" ); cvReleaseImage( &dst ); return 0;}static void ShowHelpText() { //输出一些帮助信息 cout<<endl<<"图像分割--金字塔分割示例程序~"<<endl<<endl;cout<<"当前使用的OpenCV版本为 OpenCV "<<CV_VERSION<<endl;cout<<endl<<"键盘按键任意键- 退出程序"<<endl;} void cvPyr( IplImage* src, IplImage* dst ){ CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* comp = NULL; cvPyrSegmentation( src, dst, storage, &comp, 2, 150, 100 ); cvReleaseMemStorage( &storage );}
0 0
- 图像分割--金字塔分割算法
- opencv 金字塔图像分割
- opencv 金字塔图像分割
- opencv 金字塔图像分割
- cvPyrSegmentation() 图像金字塔分割
- opencv 金字塔图像分割
- 金字塔分割算法
- 高斯金字塔图像分割
- opencv 金字塔图像分割cvPyrSegmentation
- OpenCV学习——金字塔图像分割
- 采用金字塔方法进行图像分割
- cvPyrSegmentation 高斯图像金字塔做分割
- 采用金字塔方法进行图像分割
- opencv之金字塔实现图像分割
- opencv用金字塔cvPyrSegmentation实现图像分割
- 图像分割算法
- EM算法分割图像
- 图像分割算法
- Tomcat数据库连接池的配置方法总结
- eclipse中访问不了tomcat首页server Locations变灰无法编辑
- POJ2287-Tian Ji -- The Horse Racing (Java)
- python yield用法
- DB2使用Hibernate拦截器实现脏读(with ur)
- 图像分割--金字塔分割算法
- Maven4MyEclipse 使用介绍
- 替换OpenSSL Engine加密之替换EVP_CIPHER结构
- Oracle的伪列说明
- 一个旅游网反爬手段学习---个人笔记
- 实验田之打印ArrayList
- vs2012下使用相对路径添加其他目录的方法
- 字符集编码
- 黑马程序员——Java多线程