• 大小: 19.22MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2024-03-14
  • 语言: C/C++
  • 标签: opencv  

资源简介

线激光器的中心线提取,基于opencv的C++算法,基于海塞矩阵的方法

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 

using namespace std;
using namespace cv;

int main()
{
Mat img1 = imread(“201.bmp“ 1);//读取背景图像
Mat img2 = imread(“211.bmp“ 1);//读取线光图像
Mat img00;//定义相减结果

//图像相减
addWeighted(img1 -1 img2 1 0 img00);
imshow(“背景图像“ img1);
imshow(“线光图像“ img2);
imshow(“图像相减结果“ img00);
imwrite(“subresult.bmp“ img00);

Mat img;
Mat img0;
cvtColor(img00 img0 CV_BGR2GRAY);//颜色空间转换函数,转换成灰度图像,改变mat的通道数
img = img0.clone();//复制图像

//高斯滤波
img.convertTo(img CV_32FC1);//转换数据类型不同的mat,改变位深度,32位浮点型单通道
GaussianBlur(img img Size(0 0) 6 6);

//一阶偏导数
Mat m1 m2;
m1 = (Mat_(1 2) << 1 -1);//x偏导(创造一个Mat类矩阵)一阶偏导=f(x+1y)-f(xy)
m2 = (Mat_(2 1) << 1 -1);//y偏导(创造矩阵)一阶偏导=f(xy+1)-f(xy)

Mat dx dy;
filter2D(img dx CV_32FC1 m1);//卷积
filter2D(img dy CV_32FC1 m2);//卷积

//二阶偏导数
Mat m3 m4 m5;
m3 = (Mat_(1 3) << 1 -2 1);//求二阶x偏导的矩阵=f(x+1y)+f(x-1y)-2f(xy)
m4 = (Mat_(3 1) << 1 -2 1);//二阶y偏导的矩阵
m5 = (Mat_(2 2) << 1 -1 -1 1);//二阶xy偏导矩阵=f(x+1y+1)-f(x+1y)-f(xy+1)+f(xy)

Mat dxx dyy dxy;
filter2D(img dxx CV_32FC1 m3);
filter2D(img dyy CV_32FC1 m4);
filter2D(img dxy CV_32FC1 m5);

//hessian矩阵
double maxD = -1;
int imgcol = img.cols;
int imgrow = img.rows;
vector Pt;
for (int i = 0; i {
for (int j = 0; j {
if (img0.at(j i)>200)
{
Mat hessian(2 2 CV_32FC1);
hessian.at(0 0) = dxx.at(j i);
hessian.at(0 1) = dxy.at(j i);
hessian.at(1 0) = dxy.at(j i);
hessian.at(1 1) = dyy.at(j i);

Mat eValue;
Mat eVectors;
eigen(hessian eValue eVectors);

double nx ny;
double fmaxD = 0;
if (fabs(eValue.at(0 0)) >= fabs(eValue.at(1 0)))  //求特征值最大时对应的特征向量
{
nx = eVectors.at(0 0);
ny = eVectors.at(0 1);
fmaxD = eValue.at(0 0);
}
else
{
nx = eVectors.at(1 0);
ny = eVectors.at(1 1);
fmaxD = eValue.at(1 0);
}

double t = -(nx*dx.at(j i) + ny * dy.at(j i)) / (nx*nx*dxx.at(j i) + 2 * nx*ny*dxy.at(j i) + ny * ny*dyy.at(j i));

if (fabs(t*nx) <= 0.5 && fabs(t*ny) <= 0.5)
{
Pt.push_back(i);
Pt.push_back(j);
}
}
}
}

//在原图上显示提取结果 
for (int k = 0; k {
Point rpt;
rpt.x = Pt[2 * k + 0];
rpt.y = Pt[2 * k + 1];
circle(img00 rpt 0.5 Scalar(0 0 255));
}

imshow(“result“ img00);
imwrite(“提取结果.bmp“ img00);
waitKey(0);
return 0;
}



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-05-15 19:32  steger\
     目录           0  2018-04-14 11:05  steger\.vs\
     目录           0  2018-04-14 11:05  steger\.vs\steger\
     目录           0  2018-05-15 19:32  steger\.vs\steger\v15\
     文件       23552  2018-05-15 19:34  steger\.vs\steger\v15\.suo
     文件    17969152  2018-05-15 19:34  steger\.vs\steger\v15\Browse.VC.db
     目录           0  2018-04-14 11:06  steger\.vs\steger\v15\ipch\
     目录           0  2018-04-18 14:49  steger\.vs\steger\v15\ipch\AutoPCH\
     目录           0  2018-04-14 11:07  steger\.vs\steger\v15\ipch\AutoPCH\4e4ec8f80edc9eb7\
     文件    61472768  2018-05-15 19:32  steger\.vs\steger\v15\ipch\AutoPCH\4e4ec8f80edc9eb7\源.ipch
     目录           0  2018-05-15 19:33  steger\steger\
     文件        1432  2018-04-14 11:05  steger\steger.sln
     文件       24493  2018-04-18 14:44  steger\steger\1.png
     文件     1311798  2017-10-19 16:45  steger\steger\201.bmp
     文件     1311798  2017-10-19 16:45  steger\steger\211.bmp
     文件     5242934  2018-04-26 15:08  steger\steger\222.bmp
     文件     5242934  2018-04-26 15:08  steger\steger\444.bmp
     文件        5943  2018-04-14 13:04  steger\steger\steger.vcxproj
     文件         948  2018-04-14 13:04  steger\steger\steger.vcxproj.filters
     文件         165  2018-04-14 11:05  steger\steger\steger.vcxproj.user
     文件     3932214  2018-05-15 19:33  steger\steger\subresult.bmp
     目录           0  2018-04-14 13:04  steger\steger\x64\
     目录           0  2018-05-15 19:33  steger\steger\x64\Debug\
     文件        1564  2018-05-15 19:33  steger\steger\x64\Debug\steger.log
     目录           0  2018-05-15 19:33  steger\steger\x64\Debug\steger.tlog\
     文件         568  2018-05-15 19:33  steger\steger\x64\Debug\steger.tlog\CL.command.1.tlog
     文件       26634  2018-05-15 19:33  steger\steger\x64\Debug\steger.tlog\CL.read.1.tlog
     文件         392  2018-05-15 19:33  steger\steger\x64\Debug\steger.tlog\CL.write.1.tlog
     文件        1104  2018-05-15 19:33  steger\steger\x64\Debug\steger.tlog\link.command.1.tlog
     文件        3796  2018-05-15 19:33  steger\steger\x64\Debug\steger.tlog\link.read.1.tlog
     文件         384  2018-05-15 19:33  steger\steger\x64\Debug\steger.tlog\link.write.1.tlog
............此处省略12个文件信息

评论

共有 条评论