激光条纹中心线提取算法总结和复现

您所在的位置:网站首页 条纹有哪些画法 激光条纹中心线提取算法总结和复现

激光条纹中心线提取算法总结和复现

2024-07-11 10:15| 来源: 网络整理| 查看: 265

滤波、分割等预处理过程省略。 输入图像为灰度图,激光条纹水平走向。 在这里插入图片描述

目录 几何中心法极值法细化法灰度重心法法向质心法Steger算法

几何中心法

检测出光条边界 l、h 后,把两边界的中间线(l + h)/2作为激光条纹的中心线。

#include #include int main(int argc, char** argv) { cv::Mat src_img = cv::imread("70.bmp", 0); cv::Mat dst_img = src_img.clone(); cv::cvtColor(dst_img, dst_img, cv::COLOR_GRAY2RGB); uchar *p = src_img.data; std::vector pts; for (size_t i = 0; i = 0 && y_max 0 ? 1 : 0; int p7 = int(src_img.at(j + 1, i - 1))>0 ? 1 : 0; int p8 = int(src_img.at(j, i - 1))>0 ? 1 : 0; int p9 = int(src_img.at(j - 1, i - 1))>0 ? 1 : 0; int np1 = p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9; int sp2 = (p2 == 0 && p3 == 1) ? 1 : 0; int sp3 = (p3 == 0 && p4 == 1) ? 1 : 0; int sp4 = (p4 == 0 && p5 == 1) ? 1 : 0; int sp5 = (p5 == 0 && p6 == 1) ? 1 : 0; int sp6 = (p6 == 0 && p7 == 1) ? 1 : 0; int sp7 = (p7 == 0 && p8 == 1) ? 1 : 0; int sp8 = (p8 == 0 && p9 == 1) ? 1 : 0; int sp9 = (p9 == 0 && p2 == 1) ? 1 : 0; int sp1 = sp2 + sp3 + sp4 + sp5 + sp6 + sp7 + sp8 + sp9; if (np1 >= 2 && np1 0 ? 1 : 0; int p4 = int(src_img.at(j, i + 1)) > 0 ? 1 : 0; int p5 = int(src_img.at(j + 1, i + 1)) > 0 ? 1 : 0; int p6 = int(src_img.at(j + 1, i)) > 0 ? 1 : 0; int p7 = int(src_img.at(j + 1, i - 1)) > 0 ? 1 : 0; int p8 = int(src_img.at(j, i - 1)) > 0 ? 1 : 0; int p9 = int(src_img.at(j - 1, i - 1)) > 0 ? 1 : 0; int np1 = p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9; int sp2 = (p2 == 0 && p3 == 1) ? 1 : 0; int sp3 = (p3 == 0 && p4 == 1) ? 1 : 0; int sp4 = (p4 == 0 && p5 == 1) ? 1 : 0; int sp5 = (p5 == 0 && p6 == 1) ? 1 : 0; int sp6 = (p6 == 0 && p7 == 1) ? 1 : 0; int sp7 = (p7 == 0 && p8 == 1) ? 1 : 0; int sp8 = (p8 == 0 && p9 == 1) ? 1 : 0; int sp9 = (p9 == 0 && p2 == 1) ? 1 : 0; int sp1 = sp2 + sp3 + sp4 + sp5 + sp6 + sp7 + sp8 + sp9; if (np1 >= 2 && np1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3