OpenCV图像骨架提取

上传人:仙*** 文档编号:193648645 上传时间:2023-03-11 格式:DOCX 页数:4 大小:37.19KB
返回 下载 相关 举报
OpenCV图像骨架提取_第1页
第1页 / 共4页
OpenCV图像骨架提取_第2页
第2页 / 共4页
OpenCV图像骨架提取_第3页
第3页 / 共4页
点击查看更多>>
资源描述
OpenCV图像骨架提取OpenCV图像骨架提取 /*/ /* 提取骨架 */ /*/ #include #include int main(void) IplImage *src; IplImage *distsrc; IplImage *out; IplImage *S00; IplImage *S45; IplImage *S90; IplImage *S135; CvMat kern00, kern45, kern90, kern135; float Smax=0; float L0= -1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, -1,-1,-1,-1,-1 ; float L45= 0,-1,-1, 0, 2, -1,-1, 0, 2, 0, -1, 0, 2, 0,-1, 0, 2, 0,-1,-1, 2, 0,-1,-1, 0 ; float L90= -1, 0, 2, 0,-1, -1, 0, 2, 0,-1, -1, 0, 2, 0,-1, -1, 0, 2, 0,-1, -1, 0, 2, 0,-1 ; float L135= 2, 0,-1,-1, 0, 0, 2, 0,-1,-1, -1, 0, 2, 0,-1, -1,-1, 0, 2, 0, 0,-1,-1, 0, 2 ; src=cvLoadImage(OpenCVKasvandTest.png,0); distsrc=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); S00=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); S45=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); S90=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); S135=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); out=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); /kernel建立矩阵卷积核 cvInitMatHeader(&kern00,5,5,CV_32FC1,L0); cvInitMatHeader(&kern45,5,5,CV_32FC1,L45); cvInitMatHeader(&kern90,5,5,CV_32FC1,L90); cvInitMatHeader(&kern135,5,5,CV_32FC1,L135); /距离变换 cvDistTransform(src,distsrc,CV_DIST_L2,5); /过滤,其实就是卷积 cvFilter2D(distsrc,S00,&kern00); cvFilter2D(distsrc,S45,&kern45); cvFilter2D(distsrc,S90,&kern90); cvFilter2D(distsrc,S135,&kern135); / /Smax = MAX(S00,S45,S90,S135) / / Smax, Smax = 0 / g = | / 0 , others / for (int y=0; y height; y+) for (int x=0; xwidth; x+) Smax = MAX( MAX(float*)(S00-imageData + y* S00-widthStep)x, (float*)(S45-imageData + y* S45-widthStep)x), MAX(float*)(S90-imageData + y* S90-widthStep)x, (float*)(S135-imageData + y* S135-widthStep)x); (float*)(out-imageData + y* out-widthStep)x = Smax 0 ? Smax: 0.0; cvThreshold(out,out,7,1,CV_THRESH_BINARY); cvNamedWindow(S00,1); cvNamedWindow(S45,1); cvNamedWindow(S90,1); cvNamedWindow(S135,1); cvNamedWindow(out,1); cvShowImage(S00,S00); cvShowImage(S45,S45); cvShowImage(S90,S90); cvShowImage(S135,S135); cvShowImage(out,out); cvWaitKey(0); cvCvtScaleAbs(S00,src,32,0); cvSaveImage(S00.png,src); cvCvtScaleAbs(S45,src,32,0); cvSaveImage(S45.png,src); cvCvtScaleAbs(S90,src,32,0); cvSaveImage(S90.png,src); cvCvtScaleAbs(S135,src,32,0); cvSaveImage(S135.png,src); cvCvtScaleAbs(out,src,255,0); cvSaveImage(out.png,src); return 0; 对于简单结构的图形可以简单运用上述方法即可得到较好的骨架,对于稍微复杂的图形,或者干扰较大的图形,可以通过对原图进行多次卷积,使得骨架信息变得更加突出,一般34次卷积效果较好。 原图 水平方向 45度方向 90度方向 135度方向 最终结果 曾经的这一天.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!