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

辉县网站建设求职简历北京网站设计公司兴田德润信任高

辉县网站建设求职简历,北京网站设计公司兴田德润信任高,中国移动crm系统,wordpress相关推荐代码霍夫变换 首先是笛卡尔坐标系到霍夫空间的转换,比如笛卡尔坐标系中有一条直线 yaxb。 笛卡尔坐标系中一条直线,对应霍夫空间的一个点。 反过来同样成立(霍夫空间的一条直线,对应笛卡尔坐标系的一个点) 原理其实很简单 …

霍夫变换

        首先是笛卡尔坐标系到霍夫空间的转换,比如笛卡尔坐标系中有一条直线 y=ax+b。

 笛卡尔坐标系中一条直线,对应霍夫空间的一个点。
反过来同样成立(霍夫空间的一条直线,对应笛卡尔坐标系的一个点)
原理其实很简单
比如
(1)笛卡尔坐标系内y=ax+b 一条直线确定时 它的斜率和截距是确定的 即是a b是确定的,因此到了霍夫空间内就对应一个(a,b) 即是笛卡尔中一条直线对应霍夫空间一个点
(2)笛卡尔坐标系内一个点 比如x1,y1 相当于x1 y1是确定的 在霍夫空间中
b=-xa+y 即是 b=-x1a+y1 代表的是一条直线 即是笛卡尔中一个点对应霍夫空间一条直线
(3)笛卡尔坐标系多个点

 这些点如果共线 就相当于回到了(1) 笛卡尔坐标系中一条直线对应霍夫空间一个点
(4)笛卡尔坐标系多个点 不共线

 (5)但是 如果直线斜率不存在的时候 霍夫空间那就不容易表示
因此我们换成极坐标 一样的转换原理
先求极坐标方程 其中参数从斜率a和截距b变成 极径p和极角θ

比如下面的变换对比

 

具体计算过程举例:

 

 OpenCV C++实现

/*
*参数说明:
*src:待检测的原图像
*rho:以像素为单位的距离分辨率,即距离r离散时的单位长度
*theat:以角度为单位的距离分辨率,即角度Θ离散时的单位长度(取值的步长)
*Threshold:累加器阈值,参数空间中离散化后每个方格被通过的累计次数大于该阈值,则该方格代表的直线被视为在原图像中存在
*lines:检测到的直线极坐标描述的系数数组,每条直线由两个参数表示,分别为直线到原点的距离r和原点到直线的垂线与x轴的夹角
*/
void myHoughLines(Mat src, double rho, double theat, int Threshold, vector<Vec2f>& lines)
{if (src.empty() || rho < 0.1 || theat>360 || theat < 0)return;int row = src.rows;int col = src.cols;Mat gray;if (src.channels() > 1){cvtColor(src, gray, COLOR_BGR2GRAY);}elsesrc.copyTo(gray);int maxDistance = sqrt(src.cols * src.cols + src.rows * src.rows); // 图像任意两点最大距离int houghMat_cols = 360 / theat;        // theat是角度取值的步长  霍夫变换后距离夹角坐标下对应的Mat的宽(一共多少个θ)int houghMat_rows = maxDistance / rho;  // 霍夫坐标距离夹角下对应的Mat的高 就是p的取值个数 Mat houghMat = Mat::zeros(houghMat_rows, houghMat_cols, CV_32FC1); // 存储p和 θ的矩阵//边缘检测Canny(gray, gray, 100, 200, 3);//二值化threshold(gray, gray, 160, 255, THRESH_BINARY);//遍历二值化后的图像for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){if (gray.ptr<uchar>(i)[j] != 0){/*从0到360度遍历角度,得到一组关于距离夹角的离散点,即得到一组关于经过当前点(i,j)按单位角度theat旋转得到的直线*/for (int k = 0; k < 360 / theat; k += theat){// k * CV_PI / 180   是极角 θ double r = i * sin(k * CV_PI / 180) + j * cos(k * CV_PI / 180);// 找哪个(θ,r)  最多 if (r >= 0){   // 直线到原点的距离必须大于0 获得在霍夫变换距离夹角坐标系下对应的Mat的行的下标int r_subscript = r / rho;// 经过该直线的点数加1houghMat.at<float>(r_subscript, k) = houghMat.at<float>(r_subscript, k) + 1;}}}}}/*现在 houghMat 矩阵里面的数值N  是经过这点的线个数(极坐标下)比如说 (行,列)对应 (p, θ)  对应的值就是 经过(p, θ)的线一共N条经过直线的点数N 大于阈值, 则视为在原图中存在该直线  就要这条直线了 */for (int i = 0; i < houghMat_rows; i++){for (int j = 0; j < houghMat_cols; j++){if (houghMat.ptr<float>(i)[j] > Threshold){// line保存直线到原点的距离和直线到坐标原点的垂线和x轴的夹角 求p和θVec2f line(i * rho, j * theat * CV_PI / 180);lines.push_back(line);}}}}

http://www.yayakq.cn/news/312967/

相关文章:

  • 俱乐部网站 模板做冷库的网站
  • 网站建设公司专业开发北京网站模板网站和定制网站影响排名
  • 电子商务网站建设与维护读书心得软件开发行业发展前景
  • 广州市 住房建设局网站龙华网站网页设计
  • 怎么搭建局域网网站吉林省建设厅网站杨学武
  • html5 wap网站模板动画河北邢台房价多少钱一平方
  • 视频网站开发策划书seo网络推广方法
  • 洛阳 网站建设公司哪家好学校如何重视校园网站建设
  • 网站建设工作落实情况福建省住房和城乡建设厅官网
  • 语言网站建设海外网站加速
  • 网站一般做几个关键词中国核工业第二二建设有限公司是国企吗
  • 网站建设管理策划书品牌全案策划案例
  • c 做网站的六大对象昆明网站设计制作公司
  • 城市建设理论研究收录网站网站建设办公
  • 上饶做网站家政公司在哪个平台推广效果好
  • 成都网站建设交易网站项目建设规划书案例
  • 怎样选择 网站建设网站双线选择
  • 网站个人备案材料现在建网站赚钱吗
  • wordpress站点地址写错做照片视频的网站
  • 做贷超网站 前期需要什么分析杨园建设社区网站
  • 成都论坛网站建设督查营商环境建设网站
  • 淘宝客网站开发 猪八戒晋城住房保障和城乡建设管网站
  • 公园网站建设方案做网站多少钱?
  • 政协系统网站建设用手机制作招生简章的app
  • 网站数据库备份怎么做淘宝官网首页图片
  • 域名打不开原来的网站如何自己搭建游戏服务器
  • 电子商务网站建设和管理的含义wordpress js在哪
  • 邮轮哪个网站是可以做特价胃肠的网络营销产品价格策略
  • 搜搜网站收录北京网页设计师培训
  • 医疗知识普及网站开发招远做网站联系电话