当前位置: 首页 > news >正文

网站开发的公司名称秦皇岛seo服务外包

网站开发的公司名称,秦皇岛seo服务外包,展示型为主的网站,软件开发专业专科前言 图像细化算法又称之为Thinning Algorithms#xff0c;或者骨架提取#xff08;skeleton#xff09;。该算法通常用于手写体数字的细化#xff0c;输入的图像要求是黑白图像#xff0c;即二值图像。从白色区域提取出该区域的中心线#xff0c;中心线对于白色区域相当…前言 图像细化算法又称之为Thinning Algorithms或者骨架提取skeleton。该算法通常用于手写体数字的细化输入的图像要求是黑白图像即二值图像。从白色区域提取出该区域的中心线中心线对于白色区域相当于骨架相对于人体所以有时候也称之为图像骨架提取。 1.Zhang算法骨架提取 zhang算法是图像细化经典算法出自《A Fast Parallel Algorithm for Thinning Digital Patterns》。给个下载链接。 该算法个人理解 不断循环遍历和修改输入的图像该图像只包含01。黑色像素点的值是0白色像素点的值是1。当前的点是P记成P1或者Pij那么该点的8个近邻点或者说8连通区域点则记成P2,P3,P4,P5,P6,P7,P8,P9。如下图所示该图来自论文。 这个九宫格代表九个像素像素值取值除了0就是1。每轮迭代又分为两个子迭代先看第一个子迭代限制条件 一共有a、b、c和d四个限制条件其中第一个就是P1点8个近邻点像素相加的总和在[2,6]闭区间内。设置这个条件是为了保护骨架线的端点不被删除。 第二个条件就是将P2P3P4P5P6P7P8P9组成一串由0和1的编码或者说是字符数其中“01”的个数。如下图所示截图来自原文有两组“01”所以AP12。该条件是为了保护两个端点之间的点不被删除即非端点。 条件c和d合起来就是P40或P60或者{P20且P80}。 同理第二个子迭代前两个条件和第一个迭代一致第三个和第四个迭代有点区别。 基于opencv实现的代码如下 /** * brief 对输入图像进行细化,骨骼化 * param src为输入图像,用cvThreshold函数处理过的8位灰度图像格式元素中只有0与1,1代表有元素0代表为空白 * param maxIterations限制迭代次数如果不进行限制默认为-1代表不限制迭代次数直到获得最终结果 * return 为对src细化后的输出图像,格式与src格式相同元素中只有0与1,1代表有元素0代表为空白 */ cv::Mat thinImage(const cv::Mat src, const int maxIterations -1) {assert(src.type() CV_8UC1);cv::Mat dst;int width src.cols;int height src.rows;src.copyTo(dst);int count 0; //记录迭代次数 while (true){count;if (maxIterations ! -1 count maxIterations) //限制次数并且迭代次数到达 break;std::vectoruchar* mFlag; //用于标记需要删除的点 //对点标记 for (int i 0; i height; i){uchar* p dst.ptruchar(i);for (int j 0; j width; j){//如果满足四个条件进行标记 // p9 p2 p3 // p8 p1 p4 // p7 p6 p5 uchar p1 p[j];if (p1 ! 1) continue;uchar p4 (j width - 1) ? 0 : *(p j 1);uchar p8 (j 0) ? 0 : *(p j - 1);uchar p2 (i 0) ? 0 : *(p - dst.step j);uchar p3 (i 0 || j width - 1) ? 0 : *(p - dst.step j 1);uchar p9 (i 0 || j 0) ? 0 : *(p - dst.step j - 1);uchar p6 (i height - 1) ? 0 : *(p dst.step j);uchar p5 (i height - 1 || j width - 1) ? 0 : *(p dst.step j 1);uchar p7 (i height - 1 || j 0) ? 0 : *(p dst.step j - 1);if ((p2 p3 p4 p5 p6 p7 p8 p9) 2 (p2 p3 p4 p5 p6 p7 p8 p9) 6){int ap 0;if (p2 0 p3 1) ap;if (p3 0 p4 1) ap;if (p4 0 p5 1) ap;if (p5 0 p6 1) ap;if (p6 0 p7 1) ap;if (p7 0 p8 1) ap;if (p8 0 p9 1) ap;if (p9 0 p2 1) ap;if (ap 1 p2 * p4 * p6 0 p4 * p6 * p8 0){//标记 mFlag.push_back(p j);}}}}//将标记的点删除 for (std::vectoruchar*::iterator i mFlag.begin(); i ! mFlag.end(); i){**i 0;}//直到没有点满足算法结束 if (mFlag.empty()){break;}else{mFlag.clear();//将mFlag清空 }//对点标记 for (int i 0; i height; i){uchar* p dst.ptruchar(i);for (int j 0; j width; j){//如果满足四个条件进行标记 // p9 p2 p3 // p8 p1 p4 // p7 p6 p5 uchar p1 p[j];if (p1 ! 1) continue;uchar p4 (j width - 1) ? 0 : *(p j 1);uchar p8 (j 0) ? 0 : *(p j - 1);uchar p2 (i 0) ? 0 : *(p - dst.step j);uchar p3 (i 0 || j width - 1) ? 0 : *(p - dst.step j 1);uchar p9 (i 0 || j 0) ? 0 : *(p - dst.step j - 1);uchar p6 (i height - 1) ? 0 : *(p dst.step j);uchar p5 (i height - 1 || j width - 1) ? 0 : *(p dst.step j 1);uchar p7 (i height - 1 || j 0) ? 0 : *(p dst.step j - 1);if ((p2 p3 p4 p5 p6 p7 p8 p9) 2 (p2 p3 p4 p5 p6 p7 p8 p9) 6){int ap 0;if (p2 0 p3 1) ap;if (p3 0 p4 1) ap;if (p4 0 p5 1) ap;if (p5 0 p6 1) ap;if (p6 0 p7 1) ap;if (p7 0 p8 1) ap;if (p8 0 p9 1) ap;if (p9 0 p2 1) ap;if (ap 1 p2 * p4 * p8 0 p2 * p6 * p8 0){//标记 mFlag.push_back(p j);}}}}//将标记的点删除 for (std::vectoruchar*::iterator i mFlag.begin(); i ! mFlag.end(); i){**i 0;}//直到没有点满足算法结束 if (mFlag.empty()){break;}else{mFlag.clear();//将mFlag清空 }}return dst; }2.基于dlib的骨架提取 dlib是一个非常强大的图像处理和深度学习库官方网址请点击。这么好用的库编译起来也不麻烦请参考这个教程完成编译。本人VS2019CMAKE3.24.0能够顺利编译使用。 骨架提取代码 // 读取图像dlib::array2dunsigned char image;dlib::load_image(image, D:/Speed/Net/deepout.png);// 进行图像骨架化dlib::skeleton(image);// 保存骨架化后的图像//dlib::save_png(image, D:/Speed/Net/deepout.png);cv::Mat dst dlib::toMat(image);3. 查表法 查表法提取骨架方法参加地址。其实查表法无外乎还是迭代图像中像素并且结合当前像素点p和其8个近邻点来处理。其实对于任何一个像素p其周围8个点无非是0或者1非0。那么根据以前高中学的排列组合知识一共有2的8次方种可能性即256种可能性。再进一步来说一个像素点其周围领域的取值情况是可以穷尽的。那么就需要对周围8个像素进行编号使得最终对应于256种情况中的一种。如下图右侧的九宫格所示其中8个领域中任意一个或者多个数相加不会存在重复的情况而且能够通过任意1个或者多个格子里的数值相加得到的数字取值恰好是1~256。 4.
http://www.zqtcl.cn/news/244061/

相关文章:

  • 沈阳快速建站公司有哪些国外做二手服装网站
  • 手机如何建立网站平台seo比较好的优化
  • 电商网站建设外包禅城南庄网站制作
  • 哈尔滨企业网站开发报价免费php网站源码
  • 东莞市公司网站建设淄博网站制作营销
  • 企业网站无线端怎么做手机网站做成app
  • 让他人建设网站需要提供的材料可在哪些网站做链接
  • 外贸公司做网站3d建模好学吗
  • dedecms新网站 上传到万网的空间上海新媒体运营公司排名
  • 包装东莞网站建设0769三层网络架构
  • 淘客网站自己做固安建站公司
  • 咸阳学校网站建设联系电话网络app开发网站建设价格
  • 没网站怎么做淘宝客网站建设耂首先金手指
  • 网站带做收录排名淘外网站怎么做
  • 网站建设分金手指排名五申请邮箱账号注册
  • 餐饮加盟网站建设字体怎么安装wordpress
  • 网站建设与维护培训凡科和有赞哪个好用
  • 景区网站的作用长春新冠最新情况
  • 个人网站上传有啥要求wordpress 浏览记录
  • appcan 手机网站开发wordpress首页音乐
  • 杭州响应式网站案例建筑工程网站建站方案
  • 网站访客抓取国内网站搭建
  • 凡科网站做的好不好太原网页
  • 十堰商城网站建设国外效果图网站
  • 怎么登陆建设工程网站泉州网红
  • 哈尔滨队网站网页美工跨境电商是什么意思
  • 网站规划与建设课程推广型网站建设软件
  • 山东网站建设系统网站设计哪家更好
  • 网络推广有哪些网站网络推广公司联系昔年下拉
  • 长沙专业外贸建站公司百度提交网站入口网站