激光条纹中心提取——灰度重心法
菜鸡的灰度重心法
灰度重心法的概念就不用我多哔哔了,做激光中心提取的同学都知道,灰度重心法应该说是最早的一种光条中心提取算法了,顾名思义就是根据灰度值的分布求出中心,所以往往要求灰度分布成高斯分布,但是实际情况是相反的,所以这种方法就只歇着,不过有很多灰度中心法结合或者改进比较常看到。
上代码
#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2\imgproc\types_c.h>
#include<vector>
using namespace cv;
using std::vector;
using namespace std;// 灰度重心法
void GGM(Mat src, int i) {Mat srcimg;srcimg = src;Mat grayimg;cvtColor(srcimg, grayimg, CV_BGR2GRAY);GaussianBlur(grayimg, grayimg, Size(0, 0), 6, 6);//traverse each columnfloat x0 = 0;for (int i = 0; i < grayimg.cols; i++) {float sum_value = 0;float sum_valuecoor = 0;vector<float>current_value;vector<float>current_coordinat;for (int j = 0; j < grayimg.rows; j++) {float current = grayimg.at<uchar>(j, i);//Save the point gray value and coordinates of the threshold into the arrayif (current > 30) {current_value.push_back(current);current_coordinat.push_back(j);}}//Calculate the gray center of gravityfor (int k = 0; k < current_value.size(); k++) {sum_valuecoor += current_value[k] * current_coordinat[k];sum_value += current_value[k];}float x = sum_valuecoor / sum_value;x0 = x;circle(srcimg, Point(i, x), 1, Scalar(0, 0, 255), -1, 8);current_value.clear();current_coordinat.clear();}namedWindow("gscog", 0);resizeWindow("gscog", 800, 600);imshow("gscog", srcimg);string save_path = ".\\RailTurnout\\center\\" + to_string(i) + ".png";cout << save_path << endl;imwrite(save_path, srcimg);waitKey(10);
}
int main() {// 相对对路径string path = ".\\RailTurnout\\result\\*.png";cout << path << endl;vector<Mat> images;vector<String> fn;glob(path, fn, false);cout << fn.size() << endl;size_t count = fn.size();cout << count << endl;for (int i = 0; i < count; i++) {images.push_back(imread(fn[i]));GGM(images[i], i);/*imshow("pic", images[i]);waitKey(10);*/}system("pause");return 0;
}
贴结果
左边是没有经过深度学习去噪处理的,右边是采用深度学习去噪处理的
我建立了一个激光条纹提取的群,欢迎小伙伴加入,学习交流:点击链接加入群聊【激光条纹中心提取】 先申明本人是学生,不涉及营销、宣传、推广、盈利,单纯为了学习交流,所以心怀不轨的请绕道!!!
激光条纹中心提取——灰度重心法相关推荐
- 激光条纹中心提取——灰度中心法python
激光条纹中心提取--灰度中心法python 灰度中心法 python代码 灰度中心法 灰度重心法是根据每行光条纹横截面内的灰度分布特征逐行进行处理,通过在行坐标的方向上,逐行计算提取光条纹区域的灰度重 ...
- 传统激光条纹中心提取算法研究现状
传统激光条纹中心提取算法研究现状 前言 一.边缘法 二.中心法 三.阈值法 四. 细化法 五.极值法 六.灰度重心法 七.方向模板 八.曲线拟合法 九.Steger 前言 光条中心提取是将宽度大于1的 ...
- 激光条纹中心提取——方法总结
激光条纹中心提取--方法总结 算法 优势 缺点 边缘法 处理速度快:适用于精度要求低的大型物体测量 存在很大误差:要求图像质量较好且结构光特性较高 中心法 适用于条纹质量好且形状规则的物体测量:精度高 ...
- 激光条纹中心提取——Zhang-Suen法python
Zhang-Suen法 原理-- Zhang-Suen法 代码--python代码 原理-- Zhang-Suen法 细化法(又称形态学骨架法)是通过对光条纹不断地进行腐蚀操作,剥离光条纹边界,得到单 ...
- 激光条纹中心提取——ZhangSuen法python
ZhangSuen法: 论文连接:A fast parallel algorithm for thinning digital patterns 代码连接:https://github.com/bsd ...
- 【必备知识】:线激光条纹中心线提取算法导读
线激光条纹特性 线激光器是由点激光器和前置透镜组成的.点激光器可以为He-Ne激光器或半导体激光器.相比较He-Ne激光器,半导体激光器因其输出光源具有发散性,更适合用于制作线激光器.需要说明的是,半 ...
- 中线提取算法_综述|线结构光中心提取算法研究发展
摘 要: 线结构光扫描是三维重建领域的关键技术.光条纹中心提取算法是决定线结构光三维重建精度以及光条纹轮廓定位准确性的重要因素.本文详细阐述了光条纹中心提取算法的理论基础及发展历程,将现有算法分为三类 ...
- 灰度重心法提取光条纹中心
灰度重心法提取激光光条纹中心其实是将光条纹截面的灰度值分布中的质心记作为光条纹的中心. 在一列线激光中先利用极值法求取光强最大的一点gmax,然后确定一个阀值K=gmax-g(g取10-20),在 ...
- 灰度重心法提取中心线遇到的问题
import cv2 img = cv2.imread("E:/tuku/2019-10-28_10_36_21_370.bmp",0) median = cv2.Gaussian ...
- 灰度重心法原理与实现
转自:https://blog.csdn.net/moses1213/article/details/44679603 灰度重心法提取激光光条纹中心其实是将光条纹截面的灰度值分布中的质心记作为光条纹的 ...
最新文章
- Python 进阶_生成器 生成器表达式
- php 类示例,PHP类实例教程(二十二):类型提示
- C语言用户标准是什么,C语言系统用户标准管理系统.doc
- 一劳永逸的搞定 flex 布局
- 计算机辅助教学 林筑英,视频教学制作技巧.doc
- ASP.NET Core 对Controller进行单元测试
- 显卡bind 驱动 linux,Linux 配置bind 服務
- 蓝桥杯 ALGO-74 算法训练 连接字符串
- app = Flask(__name__) 是个什么东西
- .msi文件安装出现2503、2502错误
- 《黑客之道》- 全网最详细的kali系统安装教程
- SHAP (SHapley Additive exPlanations)
- 用 js判断 一个数是否是素数(质数)_js 基础算法题(二)
- 实时音视频质量评估方案
- range-coder使用
- MySQL数据库——数据完整性(实体完整性、域完整性、参照完整性)
- 常见的信息安全相关SCI期刊
- CTF练题(5)word隐写基础题,jpg图片隐写,敲击码解密
- js中break关键字的用法。
- linux的chmod与chown