matlab 高斯一阶导,将Matlab高斯导数转换为Opencv
我试图将我在matlab中制作的旧练习转换为OpenCV。代码如下。我还没有找到任何我想要的OpenCv功能,可能是因为其他名称,然后我的期望。
以每个位置的最大响应作为标签时,以下是输出。显然有些事情。
这里是matlab代码:
function responses = getBifResponsesEx(im, myEps, sigma, kernelSize)
if ( nargin == 3 )
if ( sigma >= 1 )
kernelSize = 6*sigma + 1;
else
kernelSize = 7;
end
end
responses = zeros(size(im,1), size(im,2), 7);
%
% Gaussian derivatives
%
kernVal = ceil(kernelSize/2) - 1;
x = (-kernVal:kernVal);
g = 1/(2*pi*sigma^2)*exp(-(x.^2./(2*(sigma^2))));
g = g/sum(g);
dg = -2*x/(2*sigma^2).*g*sigma;
ddg = ((2*x/(2*sigma^2)).^2 - 1/(sigma^2)).*g*sigma;
%
% Gaussian convolution of the image
%
s00 = filter2(g, im);
s00 = filter2(g', s00);
s10 = filter2(g', im);
s10 = filter2(dg, s10);
s01 = filter2(g, im);
s01 = filter2(dg', s01);
s11 = filter2(dg, im);
s11 = filter2(dg', s11);
s20 = filter2(g', im);
s20 = filter2(g', s20);
s20 = filter2(ddg, s20);
s02 = filter2(g, im);
s02 = filter2(g, s02);
s02 = filter2(ddg', s02);
%
% Symmetry types - MISSING CODE!!!!
%
lam = sigma^2*(s20+s02);
gam = sigma^2*(sqrt((s20-s02).^2+4*s11.^2));
responses(:,:,1) = myEps*s00;
responses(:,:,2) = 2*sigma*sqrt(s10.^2+s01.^2);
responses(:,:,3) = +lam;
responses(:,:,4) = -lam;
responses(:,:,5) = 2^-.5*(gam+lam);
responses(:,:,6) = 2^-.5*(gam-lam);
responses(:,:,7) = gam;
end这是我转换后的页面。从我所能看到的情况来看,它与s20,s02的回应相差无几。任何人都可以告诉我该怎么办?
void extract_bif_features(const cv::Mat & src,
std::vector<:mat> & dst, BIFParams params)
{
float sigma = params.sigma;
float n=0;
int kernelSize;
if(sigma>=1)
kernelSize = 6*sigma + 1;
else
kernelSize = 7;
cv::Mat gray,p00,p10,p01,p11,p20,p02;
cv::cvtColor(src,gray,CV_BGR2GRAY);
auto kernVal = (int)ceil(kernelSize/2.0) - 1;
cv::Mat_ g(1,kernelSize);float*gp = g.ptr();
cv::Mat_ dg(1,kernelSize);float*dgp = dg.ptr();
cv::Mat_ ddg(1,kernelSize); float*ddgp = ddg.ptr();
cv::Mat_ X(1,kernelSize);float*xp = X.ptr();
auto gsum=0.0f;
for(int x = -kernVal;x<=kernVal;++x)
{
xp[x+kernVal] = x;
gp[x+kernVal] = 1/(2*CV_PI*sigma*sigma)*exp(-(x*x/(2*(sigma*sigma))));
gsum += gp[x+kernVal];
}
g = g/gsum;
cv::multiply((-2*X / (2*sigma*sigma)),g*sigma,dg);
cv::pow((2*X/(2*sigma*sigma)),2,ddg);
ddg -=1/(sigma*sigma);
cv::multiply(ddg,g*sigma,ddg);
std::cout << ddg<< std::endl;
std::cout << dg<< std::endl;
cv::sepFilter2D(gray,p00,CV_32FC1,g,g,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE); cv::sepFilter2D(gray,p01,CV_32FC1,dg,g,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE); cv::sepFilter2D(gray,p10,CV_32FC1,g,dg,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE); cv::sepFilter2D(gray,p11,CV_32FC1,dg,dg,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE);
//NOT SURE HERE
cv::sepFilter2D(gray,p20,CV_32FC1,g,ddg,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE);
//cv::sepFilter2D(p20,p20,CV_32FC1,1,g,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE); cv::sepFilter2D(gray,p02,CV_32FC1,g,ddg,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE); //cv::sepFilter2D(p02,p02,CV_32FC1,g,1,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE);
cv::filter2D(gray,p20,CV_32FC1,g,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE);
cv::filter2D(p20,p20,CV_32FC1,g,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE);
cv::filter2D(p20,p20,CV_32FC1,ddg,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE);
cv::filter2D(gray,p02,CV_32FC1,g,cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE);
cv::filter2D(p02,p02,CV_32FC1,g.t(),cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE);
cv::filter2D(p02,p02,CV_32FC1,ddg.t(),cv::Point(-1,-1),0.0,cv::BORDER_REPLICATE);
dst.resize(6);
auto sigma_square = sigma*sigma;
cv::Mat Lam = sigma_square * (p20+p02);
cv::Mat Gam ;
cv::sqrt((((p20-p02)*(p20-p02))+4*p11*p11),Gam);
Gam *= sigma_square ;
cv::Mat test = p10*p10;
//slop
cv::sqrt(p10*p10 + p01*p01,dst[0]);
dst[0] = dst[0]*2*sigma;//slop
//blob
dst[1] = Lam;
dst[2] = -1*Lam;
//line
dst[3] = sqrt(2.0f)*(Gam+Lam);
dst[4] = sqrt(2.0f)*(Gam-Lam);
//saddle
dst[5] = Gam;
}
matlab 高斯一阶导,将Matlab高斯导数转换为Opencv相关推荐
- matlab 高斯一阶导,高斯函数及其各阶导数
[使用Matlab进行拟合是图像处理中线条变换的一个重点内容,本文将详解Matlab中的直线拟合和曲线拟合用法.关键函数:fittypeFit type for curve and surface f ...
- 图像增强之拉普拉斯锐化---高斯一阶导二阶导数
图像处理之高斯一阶及二阶导数计算 图像的一阶与二阶导数计算在图像特征提取与边缘提取中十分重要.一阶与二阶导数的 作用,通常情况下: 一阶导数可以反应出图像灰度梯度的变化情况 二阶导数可以提取出图像的细 ...
- matlab 曲线拟合求导,基于matlab曲线拟合的数据预测分析
龙源期刊网 http://www.doczj.com/doc/2f22f716cbaedd3383c4bb4cf7ec4afe05a1b148.html 基于matlab曲线拟合的数据预测分析 作者: ...
- 拉普拉斯Laplace算子和高斯二阶导核(LOG算子)和SIFT算法
前置知识 边缘检测:图像边缘的强度(边缘线的清晰度)由图像的梯度的强度决定,因为梯度值越强,说明x轴.y轴的像素点变化越快,所以该点处越可能是边缘.边缘和梯度方向是垂直的.举个例子,下图就是用的y方向 ...
- 【matlab】求导
一:matlab求一阶导 diff(y,x) 其中y是x的函数 二:matlab求二阶导 diff(y,x,2) 三:举例 syms x y y=x^3; dy=diff(y,x) ddy=diff( ...
- 【光学】基于matlab GS算法高斯光转换成高阶高斯光+一阶空心高斯光+贝塞尔高斯光【含Matlab源码 2166期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GS算法高斯光转换成高阶高斯光+一阶空心高斯光+贝塞尔高斯光[含Matlab源码 2166期] 点击上面蓝色字体 ...
- 2021-01-07 matlab数值分析 线性方程组的迭代解法 高斯-赛德尔迭代法
matlab数值分析 线性方程组的迭代解法 高斯-赛德尔迭代法 Function [x,iter]=gs(A,b,tol) D=diag(diag(A)); L=D-tril(A); U=D-triu ...
- matlab 离散点求导_Matlab的离散点曲线导数曲率数值模拟方法
模拟方法: 复制内容到剪贴板 代码 : clc; clear all; close all; x0 = linspace(0, 1); y0 = sin(x0).*cos(x0); h = abs(d ...
- 基于MATLAB的批量3度带高斯正算(LB--xy)
文章目录 一.高斯正算原理 (1)高斯-克吕格投影 (2)高斯正算原理以及公式(LB----xy) 二.MATLAB高斯正算详解代码 1.源数据 2.源码 3.运行结果 一.高斯正算原理 (1)高斯- ...
最新文章
- 区块链应用 | 不知道什么时候起,满世界都在谈区块链的事情
- 为所欲为——教你什么才是真正的任意分频
- android aop静态方法,spring aop 不能对静态方法进行增强解决
- 求1到n ,这n个整数的二进制表示比特1的个数(时间复杂度:O(n))
- python的语句_Python的语句
- python元素定位input button_python+selenium 定位到元素,无法点击的解决方法
- [SQL Server 2014] SQL Server 2014新特性探秘
- iOS之 开发学习笔记-block
- vmware vsphere出现“需要整合虚拟机磁盘”的告警处理方法(完整版)
- Reading query string values in JavaScript
- 【路径规划】基于matlab GUI改进的DWA算法机器人静态避障路径规划【含Matlab源码 678期】
- Polymorphism in Overloaded and Overridden Method
- HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)
- Ubuntu上安装R和rstudio-server
- Vue从入门到放弃(一)——指令篇
- python继承和多态心得_python学习第十五天 -面向对象之继承和多态
- OVAL学习之第二篇
- RTD2172/RTD2171 Type-C转HDMI设计方案|替代RTD2171/RTD2172芯片|GSV2201可完全替代兼容RTD2172/RTD2171
- 模型预测控制的缺点_基于数据驱动的模型预测控制
- NX/UG二次开发—其他—分享几个UG内部函数
热门文章
- 2.8 Adam 优化算法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- FPGA进阶篇--SPI控制双通道16bit串行DAC8532
- [Android工具]更新安卓百度云盘百度网盘资源搜索工具,安卓网盘搜索软件
- 理一理Latency、Bandwidth、Throughput、Response Time概念的区别
- 关于同步加载与异步加载的区别
- Rsync+inotify搭建使用
- Android 导航栏如何轻松搞定
- [Erlang 0014]Erlang垃圾回收机制
- 微服务部署:蓝绿部署、滚动部署、灰度发布等部署方案对比与总结
- 监控摄像机选型攻略之有无必要性