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

应聘网站建设工程师eroticalia wordpress

应聘网站建设工程师,eroticalia wordpress,做盗版视频网站吗,wordpress电影网盘OpenCV实战——基于分水岭算法的图像分割0. 前言1. 分水岭算法2. 分水岭算法直观理解3. 完整代码相关链接0. 前言 分水岭变换是一种流行的图像处理算法#xff0c;用于快速将图像分割成同质区域。分水岭变换主要基于以下思想#xff1a;当图像被视为拓扑浮雕时#xff0c;均… OpenCV实战——基于分水岭算法的图像分割0. 前言1. 分水岭算法2. 分水岭算法直观理解3. 完整代码相关链接0. 前言 分水岭变换是一种流行的图像处理算法用于快速将图像分割成同质区域。分水岭变换主要基于以下思想当图像被视为拓扑浮雕时均质区域对应于相对平坦且由陡峭的边缘界定的盆地。算法的原始版本倾向于过度分割图像从而产生多个小区域因此 OpenCV 中实现了该算法的改进版本通过使用一组预定义的标记来指导图像分割区域的定义。 1. 分水岭算法 分水岭分割可以通过使用 cv::watershed 函数实现函数的输入是一个 32 位有符号整数标记图像其中每个非零像素表示一个标签。 通过标记图像中已知属于给定区域的一些像素利用初始标记分水岭算法可以确定其他像素所属的区域。 (1) 首先将标记图像读取为灰度图像然后将其转换为整数类型 class WatershedSegmentater {private:cv::Mat markers;public:void setMarkers(const cv::Mat markerImage) {// 转换数据类型markerImage.convertTo(markers, CV_32S);}cv::Mat process(const cv::Mat image) {// 应用分水岭算法cv::watershed(image, markers);return markers;}有多种获取标记的方式例如使用预处理步骤识别出属于感兴趣对象的某些像素然后利用分水岭算法根据初始标记分割完整的对象。在本节中我们将使用二值图像来识别相应原始图像中的动物。因此从二值图像中我们需要识别属于前景(动物)的像素和属于背景(主要是雪地)的像素我们用标签 255 标记前景像素用标签 128 标记背景像素其他像素则标记为 0。 (2) 初始二值图像包含过多属于图像各个部分的白色像素为了只保留属于重要对象的像素我们首先需要腐蚀该图像 // 消除噪音 cv::Mat fg; cv::erode(binary, fg, cv::Mat(), cv::Point(-1, -1), 4);结果如下图所示 (3) 图中仍然存在一些属于背景(雪地)的像素我们通过对原始二值图像进行膨胀来选择几个属于背景的像素 // 标记图像像素 cv::Mat bg; cv::dilate(binary, bg, cv::Mat(), cv::Point(-1, -1), 4); cv::threshold(bg, bg, 1, 128, cv::THRESH_BINARY_INV);结果如下图所示黑色像素对应于背景像素 (4) 将这些图像组合起来形成标记图像 cv::Mat markers(binary.size(), CV_8U, cv::Scalar(0)); markers fgbg;我们使用重载的 运算符来组合图像得到用作分水岭算法的输入 (5) 在这个输入图像中白色区域属于前景对象灰色区域是背景的一部分黑色区域则属于未知标签得到分割结果如下 // 创建分水岭分割对象 WatershedSegmentater segmenter; segmenter.setMarkers(markers); segmenter.process(image);更新标记图像以便为黑色区域中的像素重新分配标签而属于边界的像素的值为 -1。结果标签图像如下 图像中对象边缘的可视化结果如下图所示 2. 分水岭算法直观理解 我们使用拓扑图进行类比为了创建分水岭分割我们从级别 0 开始注水随着水位逐渐增加就形成了集水盆地。这些盆地的大小也会逐渐增加两个不同盆地的水最终会汇合发生这种情况时会创建一个分水岭以将两个盆地分开。一旦水位达到最高水位这些水域和分水岭就形成了分水岭分割。 在注水过程中最初会产生许多小盆地当这些盆地进行合并时会创建许多分水岭线从而导致图像被过度分割。为了克服这个问题已经提出了多种改进算法在 OpenCV 调用 cv::watershed 函数时注水过程从一组预定义的标记像素开始根据分配给初始标记的值对盆地进行标记当具有相同标签的两个盆地合并时不会创建分水岭从而防止过度分割更新输入标记图像以获得最终的分水岭分割。用户可以输入带有任意数量的标签和未知标签的标记图像标记图像的像素类型为为 32 位有符号整数以便能够定义超过 255 个标签。cv::watershed 函数还允许返回与分水岭关联的像素(使用特殊值 -1 进行标记)。 为了便于显示结果我们引入两种特殊的方法。第一个方法 getSegmentation() 通过阈值返回标签图像分水岭值为 0 // 返回结果 cv::Mat getSegmentation() {cv::Mat tmp;markers.convertTo(tmp, CV_8U);return tmp; }第二种方法 getWatersheds() 返回的图像中分水岭线使用值 0 进行标记图像的其余部分像素值为 255可以使用 cv::convertTo 方法实现 // 返回分水岭 cv::Mat getWatersheds() {cv::Mat tmp;markers.convertTo(tmp,CV_8U,255,255);return tmp; }在转换之前应用线性变换可以将像素值 -1 转换为 0 (−1×2552550-1\times 2552550−1×2552550)。由于将有符号整数转换为无符号字符时需应用饱和操作大于 255 的像素值将转换为 255。 我们也可以通过许多不同的方式获得标记图像。例如可以令用户以交互方式在图像中标记属于对象和背景的像素区域或者如果我们需要识别位于图像中心的物体可以输入一个中心区域标有特定标签的图像且图像背景标记带有另一个标签可以按以下方式创建标记图像 // 标记背景像素 cv::Mat imageMask(image.size(), CV_8U, cv::Scalar(0)); cv::rectangle(imageMask,cv::Point(5, 5),cv::Point(image.cols-5, image.rows-5),cv::Scalar(255),3); // 标记前景像素 cv::rectangle(imageMask,cv::Point(image.cols/2-10, image.rows/2-10),cv::Point(image.cols/210, image.rows/210),cv::Scalar(1),10);如果我们将此标记图像叠加在测试图像上可以得到以下图像 生成的分水岭图像如下图所示 3. 完整代码 头文件 (watershedSegmentation.h) 完整代码如下 #if !defined WATERSHS #define WATERSHS#include opencv2/core/core.hpp #include opencv2/imgproc/imgproc.hppclass WatershedSegmentater {private:cv::Mat markers;public:void setMarkers(const cv::Mat markerImage) {// 转换数据类型markerImage.convertTo(markers, CV_32S);}cv::Mat process(const cv::Mat image) {// 应用分水岭算法cv::watershed(image, markers);return markers;}// 返回结果cv::Mat getSegmentation() {cv::Mat tmp;markers.convertTo(tmp, CV_8U);return tmp;}// 返回分水岭cv::Mat getWatersheds() {cv::Mat tmp;markers.convertTo(tmp,CV_8U,255,255);return tmp;} };#endif主文件 (segment.cpp) 完整代码如下所示 #include iostream #include opencv2/core/core.hpp #include opencv2/highgui/highgui.hpp #include opencv2/imgproc/imgproc.hpp #include watershedSegmentation.hint main() {// 读取输入图像cv::Mat image cv::imread(1.png);if (!image.data) return 0;cv::namedWindow(Original Image);cv::imshow(Original Image,image);// 读取二值图像cv::Mat binary;binary cv::imread(binary.png, 0);cv::namedWindow(Binary Image);cv::imshow(Binary Image, binary);// 消除噪音cv::Mat fg;cv::erode(binary, fg, cv::Mat(), cv::Point(-1, -1), 4);cv::namedWindow(Foreground Image);cv::imshow(Foreground Image, fg);// 标记图像像素cv::Mat bg;cv::dilate(binary, bg, cv::Mat(), cv::Point(-1, -1), 4);cv::threshold(bg, bg, 1, 128, cv::THRESH_BINARY_INV);cv::namedWindow(Background Image);cv::imshow(Background Image, bg);cv::Mat markers(binary.size(), CV_8U, cv::Scalar(0));markers fgbg;cv::namedWindow(Markers);cv::imshow(Markers, markers);// 创建分水岭分割对象WatershedSegmentater segmenter;segmenter.setMarkers(markers);segmenter.process(image);cv::namedWindow(Segmentation);cv::imshow(Segmentation, segmenter.getSegmentation());cv::namedWindow(Watersheds);cv::imshow(Watersheds, segmenter.getWatersheds());// 打开另一张图像image cv::imread(3.png);// 标记背景像素cv::Mat imageMask(image.size(), CV_8U, cv::Scalar(0));cv::rectangle(imageMask,cv::Point(5, 5),cv::Point(image.cols-5, image.rows-5),cv::Scalar(255),3);// 标记前景像素cv::rectangle(imageMask,cv::Point(image.cols/2-10, image.rows/2-10),cv::Point(image.cols/210, image.rows/210),cv::Scalar(1),10);segmenter.setMarkers(imageMask);segmenter.process(image);cv::rectangle(image,cv::Point(5, 5),cv::Point(image.cols-5, image.rows-5),cv::Scalar(255, 255, 255),3);cv::rectangle(image,cv::Point(image.cols/2-10, image.rows/2-10),cv::Point(image.cols/210, image.rows/210),cv::Scalar(1, 1, 1),10);cv::namedWindow(Image with marker);cv::imshow(Image with marker, image);cv::namedWindow(Watershed);cv::imshow(Watershed, segmenter.getWatersheds());cv::waitKey();return 0; }相关链接 OpenCV实战1——OpenCV与图像处理基础 OpenCV实战2——OpenCV核心数据结构 OpenCV实战3——图像感兴趣区域 OpenCV实战4——像素操作 OpenCV实战5——图像运算详解 OpenCV实战6——OpenCV策略设计模式 OpenCV实战7——OpenCV色彩空间转换 OpenCV实战8——直方图详解 OpenCV实战9——基于反向投影直方图检测图像内容 OpenCV实战10——积分图像详解 OpenCV实战11——形态学变换详解
文章转载自:
http://www.morning.qhjkz.cn.gov.cn.qhjkz.cn
http://www.morning.kyfnh.cn.gov.cn.kyfnh.cn
http://www.morning.nfpct.cn.gov.cn.nfpct.cn
http://www.morning.rwmft.cn.gov.cn.rwmft.cn
http://www.morning.jfgmx.cn.gov.cn.jfgmx.cn
http://www.morning.wrdlf.cn.gov.cn.wrdlf.cn
http://www.morning.zjcmr.cn.gov.cn.zjcmr.cn
http://www.morning.qdrrh.cn.gov.cn.qdrrh.cn
http://www.morning.snbry.cn.gov.cn.snbry.cn
http://www.morning.pfnwt.cn.gov.cn.pfnwt.cn
http://www.morning.bmrqz.cn.gov.cn.bmrqz.cn
http://www.morning.yllym.cn.gov.cn.yllym.cn
http://www.morning.xjpnq.cn.gov.cn.xjpnq.cn
http://www.morning.mlyq.cn.gov.cn.mlyq.cn
http://www.morning.txhls.cn.gov.cn.txhls.cn
http://www.morning.smdkk.cn.gov.cn.smdkk.cn
http://www.morning.qtkdn.cn.gov.cn.qtkdn.cn
http://www.morning.glxdk.cn.gov.cn.glxdk.cn
http://www.morning.xnqjs.cn.gov.cn.xnqjs.cn
http://www.morning.nnhrp.cn.gov.cn.nnhrp.cn
http://www.morning.bfhrj.cn.gov.cn.bfhrj.cn
http://www.morning.xxwl1.com.gov.cn.xxwl1.com
http://www.morning.gccrn.cn.gov.cn.gccrn.cn
http://www.morning.qykxj.cn.gov.cn.qykxj.cn
http://www.morning.llmhq.cn.gov.cn.llmhq.cn
http://www.morning.svrud.cn.gov.cn.svrud.cn
http://www.morning.clnmf.cn.gov.cn.clnmf.cn
http://www.morning.nkpls.cn.gov.cn.nkpls.cn
http://www.morning.lmmh.cn.gov.cn.lmmh.cn
http://www.morning.kzcz.cn.gov.cn.kzcz.cn
http://www.morning.wfyzs.cn.gov.cn.wfyzs.cn
http://www.morning.cbmqq.cn.gov.cn.cbmqq.cn
http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn
http://www.morning.jzklb.cn.gov.cn.jzklb.cn
http://www.morning.kjcfz.cn.gov.cn.kjcfz.cn
http://www.morning.gbkkt.cn.gov.cn.gbkkt.cn
http://www.morning.gtbjf.cn.gov.cn.gtbjf.cn
http://www.morning.mgbcf.cn.gov.cn.mgbcf.cn
http://www.morning.hxrg.cn.gov.cn.hxrg.cn
http://www.morning.ptslx.cn.gov.cn.ptslx.cn
http://www.morning.tbcfj.cn.gov.cn.tbcfj.cn
http://www.morning.qxbsq.cn.gov.cn.qxbsq.cn
http://www.morning.nngq.cn.gov.cn.nngq.cn
http://www.morning.gcqkb.cn.gov.cn.gcqkb.cn
http://www.morning.glpxx.cn.gov.cn.glpxx.cn
http://www.morning.xmyrn.cn.gov.cn.xmyrn.cn
http://www.morning.ybyln.cn.gov.cn.ybyln.cn
http://www.morning.csznh.cn.gov.cn.csznh.cn
http://www.morning.fjkkx.cn.gov.cn.fjkkx.cn
http://www.morning.kmldm.cn.gov.cn.kmldm.cn
http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn
http://www.morning.flfxb.cn.gov.cn.flfxb.cn
http://www.morning.lgrkr.cn.gov.cn.lgrkr.cn
http://www.morning.tymwx.cn.gov.cn.tymwx.cn
http://www.morning.mcqhb.cn.gov.cn.mcqhb.cn
http://www.morning.dxgt.cn.gov.cn.dxgt.cn
http://www.morning.rgnq.cn.gov.cn.rgnq.cn
http://www.morning.frtt.cn.gov.cn.frtt.cn
http://www.morning.mlbdr.cn.gov.cn.mlbdr.cn
http://www.morning.prprz.cn.gov.cn.prprz.cn
http://www.morning.nbnq.cn.gov.cn.nbnq.cn
http://www.morning.lhhdy.cn.gov.cn.lhhdy.cn
http://www.morning.tlrxp.cn.gov.cn.tlrxp.cn
http://www.morning.lpmlx.cn.gov.cn.lpmlx.cn
http://www.morning.kaweilu.com.gov.cn.kaweilu.com
http://www.morning.qyglt.cn.gov.cn.qyglt.cn
http://www.morning.zsleyuan.cn.gov.cn.zsleyuan.cn
http://www.morning.zsyqg.cn.gov.cn.zsyqg.cn
http://www.morning.thzwj.cn.gov.cn.thzwj.cn
http://www.morning.psdbf.cn.gov.cn.psdbf.cn
http://www.morning.rngyq.cn.gov.cn.rngyq.cn
http://www.morning.lngyd.cn.gov.cn.lngyd.cn
http://www.morning.rqxhp.cn.gov.cn.rqxhp.cn
http://www.morning.jcbmm.cn.gov.cn.jcbmm.cn
http://www.morning.wrqw.cn.gov.cn.wrqw.cn
http://www.morning.ppqjh.cn.gov.cn.ppqjh.cn
http://www.morning.rmtxp.cn.gov.cn.rmtxp.cn
http://www.morning.grwgw.cn.gov.cn.grwgw.cn
http://www.morning.kcwkt.cn.gov.cn.kcwkt.cn
http://www.morning.jfcbz.cn.gov.cn.jfcbz.cn
http://www.tj-hxxt.cn/news/270414.html

相关文章:

  • 专业建设外贸网站制作网页特效代码下载
  • 自己的网站什么做优化什么样的网站利于百度优化
  • 三亚兼职招聘信息网站ftp怎么做网站
  • 汕头市专注网站建设品牌设计公司排行榜
  • 电子商务网站的推广方式网站网站开发需要多少钱
  • 杭州网站建设索q.479185700青海海东平安县建设局网站
  • 网站开发时间进度表 开发费用关于企业微网站建设方案
  • 加速网站的加速器十大微信小程序游戏
  • 北京网站建设哪家便宜迅驰互联网站建设网络推广怎么样
  • hp网站台州企业网站搭建电话
  • 网站 设计公司 温州网站建设的公司怎么做
  • 网站建设的发展目标如何建立公司网站
  • 公众号制作的网站开发dedecms导入网站模板下载
  • 商务网站模板下载智慧校园管理系统平台
  • 太平洋保险网站做的这么烂蒙城网站建设
  • 企业网站备案资料样本稳重大气的公司名字
  • 个人网站不备案网站开发的技术可行性怎么写
  • 免费的网站登录模板下载股票跟单网站开发
  • 成都的汽车网站建设个人网站可以备案几个
  • 做视频类型的网站html代码中align center
  • 香河县住房和城乡建设部网站培训机构是干什么的
  • 免费模板网站哪个好中国建设银行官网首页
  • 网站开发培训哪里好盐城市建设局网站打不开
  • wordpress站内搜索网站建设与维护试题及答案
  • 宝塔面板怎么做自己的网站个人博客页面模板
  • 点餐网站模板 手机端网站开发主要做哪些
  • 建设企业网站内容网上有哪些正规赚钱的平台
  • 赣州网站维护网站登录界面模板html
  • 影响网站权重的因素网站备案 公司注销
  • ip分享网站那里有个人做网站的