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

怎么做谷歌这样的网站吗百度账号

怎么做谷歌这样的网站吗,百度账号,网站模板及素材,网站建设公司.文章目录 一、基于距离变换与分水岭的图像分割1、图像分割2、距离和变换与分水岭距离变换常见算法有两种分水岭变换常见的算法 3、距离变换API函数接口4、watershed 分水岭函数API接口步骤 5、代码 一、基于距离变换与分水岭的图像分割 1、图像分割 图像分割(Image Segmentat… 文章目录 一、基于距离变换与分水岭的图像分割1、图像分割2、距离和变换与分水岭距离变换常见算法有两种分水岭变换常见的算法 3、距离变换API函数接口4、watershed 分水岭函数API接口步骤 5、代码 一、基于距离变换与分水岭的图像分割 1、图像分割 图像分割(Image Segmentation)是图像处理最重要的处理手段之一 图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合每个集合包含一类像素。 根据算法分为监督学习方法和无监督学习方法图像分割的算法多数都是无监督学习方法 - KMeans 2、距离和变换与分水岭 距离变换常见算法有两种 1、不断膨胀/ 腐蚀得到 2、基于倒角距离 分水岭变换常见的算法 分水岭法Meyer是一种基于拓扑理论的数学形态学的分割方法其基本思想是把图像看作是测地学上的拓扑地貌图像中每一点像素的灰度值表示该点的海拔高度每一个局部极小值及其影响区域称为集水盆而集水盆的边界则形成分水岭。该算法的实现可以模拟成洪水淹没的过程图像的最低点首先被淹没然后水逐渐淹没整个山谷。当水位到达一定高度的时候将会溢出这时在水溢出的地方修建堤坝重复这个过程直到整个图像上的点全部被淹没这时所建立的一系列堤坝就成为分开各个盆地的分水岭。分水岭算法对微弱的边缘有着良好的响应但图像中的噪声会使分水岭算法产生过分割的现象。 ———————————————— 基于浸泡理论实现 3、距离变换API函数接口 距离变换用于计算图像中每一个非零点像素与其周围最近的零点像素之间的距离返回的值保存了每一个非零点与最近零点的距离信息在图像上的体现为图像上越亮的点代表了离零点的距离越远。 void distanceTransform( InputArray src, OutputArray dst, OutputArray labels, int distanceType, int maskSize, int labelTypeDIST_LABEL_CCOMP )(1src是单通道的8bit的二值图像只有0或1 2dst表示的是计算距离的输出图像可以使单通道32bit浮点数据 3distanceType表示的是选取距离的类型可以设置为 DIST_USER User defined distance DIST_L11 distance |x1-x2| |y1-y2 DIST_L2 the simple euclidean distance DIST_C distance max(|x1-x2|,|y1-y2|) DIST_L12 L1-L2 metric: distance 2(sqrt(1x*x/2) - 1)) DIST_FAIR distance c^2(|x|/c-log(1|x|/c)),c 1.3998 DIST_WELSCH distance c2/2(1-exp(-(x/c)2)), c 2.9846 DIST_HUBER distance |x|c ? x^2/2 :c(|x|-c/2), c1.345 4maskSize表示的是距离变换的掩膜模板可以设置为35或CV_DIST_MASK_PRECISE对 CV_DIST_L1 或CV_DIST_C 的情况参数值被强制设定为 3, 因为3×3 mask 给出5×5 mask 一样的结果而且速度还更快。 DIST_MASK_3 mask3 DIST_MASK_5 mask5 DIST_MASK-PRECISE 5labels表示可选输出2维数组 6labelType表示的是输出二维数组的类型,8位或者32位浮点数图像是单一通道并且大小与输入图像一致 4、watershed 分水岭函数API接口 void watershed( InputArray image, InputOutputArray markers );参数说明 1参数 image必须是一个8bit3通道彩色图像矩阵序列。 2 输入或输出32位单通道的标记和图像一样大小。输入高峰轮廓标记在执行分水岭函数watershed之前必须对第二个参数markers进行处理它应该包含不同区域的轮廓每个轮廓有一个自己唯一的编号轮廓的定位可以通过Opencv中findContours方法实现这个是执行分水岭之前的要求。 算法会根据markers传入的轮廓作为种子也就是所谓的注水点对图像上其他的像素点根据分水岭算法规则进行判断并对每个像素点的区域归属进行划定直到处理完图像上所有像素点。而区域与区域之间的分界处的值被置为“-1”以做区分。 步骤 1、将白色背景变成黑色-目的是为后面的变换做准备 2、使用filter2D与拉普拉斯算子实现图像对比度提高sharp锐化 3、转为二值图像通过threshold 4、距离变换 5、对距离变换结果进行归一化到[0~1]之间 6、使用阈值再次二值化得到标记 7、腐蚀得到每个Peak - erode 8、发现轮廓 – findContours 9、绘制轮廓- drawContours 10、分水岭变换 watershed 11、对每个分割区域着色输出结果 ———————————————— 5、代码 #include opencv2/opencv.hpp #include iostream #include math.husing namespace std; using namespace cv;int main(int argc, char** argv) {char input_win[] input image;char watershed_win[] watershed segmentation demo;Mat src imread(D:/vcprojects/images/cards.png);// Mat src imread(D:/kuaidi.jpg);if (src.empty()) {printf(could not load image...\n);return -1;}namedWindow(input_win, CV_WINDOW_AUTOSIZE);imshow(input_win, src);// 1. change backgroundfor (int row 0; row src.rows; row) {for (int col 0; col src.cols; col) {if (src.atVec3b(row, col) Vec3b(255, 255, 255)) {src.atVec3b(row, col)[0] 0;src.atVec3b(row, col)[1] 0;src.atVec3b(row, col)[2] 0;}}}namedWindow(black background, CV_WINDOW_AUTOSIZE);imshow(black background, src);// sharpenMat kernel (Mat_float(3, 3) 1, 1, 1, 1, -8, 1, 1, 1, 1);Mat imgLaplance;Mat sharpenImg src;filter2D(src, imgLaplance, CV_32F, kernel, Point(-1, -1), 0, BORDER_DEFAULT);src.convertTo(sharpenImg, CV_32F);Mat resultImg sharpenImg - imgLaplance;resultImg.convertTo(resultImg, CV_8UC3);imgLaplance.convertTo(imgLaplance, CV_8UC3);imshow(sharpen image, resultImg);// src resultImg; // copy back// convert to binaryMat binaryImg;cvtColor(src, resultImg, CV_BGR2GRAY);threshold(resultImg, binaryImg, 40, 255, THRESH_BINARY | THRESH_OTSU);imshow(binary image, binaryImg);Mat distImg;distanceTransform(binaryImg, distImg, DIST_L1, 3, 5);normalize(distImg, distImg, 0, 1, NORM_MINMAX);imshow(distance result, distImg);// binary againthreshold(distImg, distImg, .4, 1, THRESH_BINARY);Mat k1 Mat::ones(13, 13, CV_8UC1);erode(distImg, distImg, k1, Point(-1, -1));imshow(distance binary image, distImg);// markers Mat dist_8u;distImg.convertTo(dist_8u, CV_8U);vectorvectorPoint contours;findContours(dist_8u, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point(0, 0));// create makersMat markers Mat::zeros(src.size(), CV_32SC1);for (size_t i 0; i contours.size(); i) {drawContours(markers, contours, static_castint(i), Scalar::all(static_castint(i) 1), -1);}circle(markers, Point(5, 5), 3, Scalar(255, 255, 255), -1);imshow(my markers, markers*1000);// perform watershedwatershed(src, markers);Mat mark Mat::zeros(markers.size(), CV_8UC1);markers.convertTo(mark, CV_8UC1);bitwise_not(mark, mark, Mat());imshow(watershed image, mark);// generate random colorvectorVec3b colors;for (size_t i 0; i contours.size(); i) {int r theRNG().uniform(0, 255);int g theRNG().uniform(0, 255);int b theRNG().uniform(0, 255);colors.push_back(Vec3b((uchar)b, (uchar)g, (uchar)r));}// fill with color and display final resultMat dst Mat::zeros(markers.size(), CV_8UC3);for (int row 0; row markers.rows; row) {for (int col 0; col markers.cols; col) {int index markers.atint(row, col);if (index 0 index static_castint(contours.size())) {dst.atVec3b(row, col) colors[index - 1];}else {dst.atVec3b(row, col) Vec3b(0, 0, 0);}}}imshow(Final Result, dst);waitKey(0);return 0; }输入原图像和锐化图像 原图和黑背景图背景应为黑色 threshold转化的二值化图片和距离变换结果图 距离变换结果图和二值化图像
http://www.hkea.cn/news/14313409/

相关文章:

  • 网页游戏广告平台网站建设wordpress安装中文
  • 外贸网站建设lanscend网页制作网站建设实战大全
  • 网站开发调研问卷优质的网站建设公司
  • 网站弹窗特效全球招商网加盟网
  • 宣武做网站鲜花网站建设企划书
  • 网站没内容可以备案吗陕西网站开发联系电话
  • centos7 wordpress网站时事新闻最新消息
  • 南京怎样做网站男科医院网站开发策划
  • 电影网站怎么做流量wordpress强制弹窗
  • html5单页面网站国外seo比较好的博客网站
  • 做自媒体网站开发南京市雨花台区建设局网站
  • 特色食品网站建设策划书常德网站建设专业品牌
  • 昆明的房产网站建设wordpress海报插件
  • 建立自己的个人网站网站 html
  • 宁国市网站关键词优化外包建设工程主管部门网站
  • wordpress子域名多站点网站常用英文
  • 网站建设采购项目合同书网站设计图尺寸
  • 重庆网站制作软文推广发稿平台
  • 辽宁住房建设部网站开发工具和开发平台
  • 商务网站建设一万字网站维护一般怎么做
  • 现在网站优化怎么做2021不良正能量免费网站app
  • 响应式培训网站模板下载网站内容丰富
  • 绍兴网站建设冯炳良怀化网络营销
  • 网站建设与运营公司的市场开发方案电脑商城
  • 网站建设承诺国外建站数据
  • 服务器网站管理系统石家庄市最新消息今天
  • 那种网站打不开宿州品牌网站建设公司
  • 怎么样免费建网站公司名查询是否被注册公司
  • 南宁电商网站建设购物网页版
  • 伊春网站优化有域名后怎么做网站