日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 高斯一阶导,将Matlab高斯导数转换为Opencv

發(fā)布時間:2025/4/5 循环神经网络 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 高斯一阶导,将Matlab高斯导数转换为Opencv 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我試圖將我在matlab中制作的舊練習轉(zhuǎn)換為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這是我轉(zhuǎn)換后的頁面。從我所能看到的情況來看,它與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;

}

總結(jié)

以上是生活随笔為你收集整理的matlab 高斯一阶导,将Matlab高斯导数转换为Opencv的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产不卡视频在线观看 | 嫩草研究院在线 | 久久精品视 | 伦理欧美 | 色婷婷国产 | 在线亚洲区 | 一级黄色免费网站 | 精品人伦一区二区三电影 | 成人av图片 | 色哟哟在线观看视频 | 成人欧美一区二区三区黑人动态图 | 一级视频毛片 | 午夜黄色一级片 | 午夜免费福利在线观看 | 午夜av一区 | 日本在线观看一区二区 | 国产精品午夜福利 | 免费a v视频| 亚洲国产午夜 | 97福利社 | 天堂网资源 | 亚洲福利社区 | 欧美视频免费看欧美视频 | av资源库| 影视av | 欧美偷拍综合 | 日韩专区中文字幕 | 操天天操 | 在线激情视频 | 91精品国产入口在线 | 一本大道伊人av久久综合 | 美女干b视频 | 天堂男人网 | 5a毛片 | 波多野结衣av片 | 亚洲乱码中文字幕 | 800av免费在线观看 | 欧美大片免费观看网址 | 国产做爰xxxⅹ高潮视频12p | 国产精品无码一区二区无人区多人 | 日本免费电影一区二区三区 | 成人精品福利 | 欧美猛操 | 激情图片在线视频 | 婷婷激情综合网 | 日本网站在线 | 国产成人在线免费 | av一区在线播放 | 成人免费观看视频 | 熟女肥臀白浆大屁股一区二区 | 97狠狠干 | 亚洲不卡视频在线 | 国产高潮国产高潮久久久91 | www.色播| 久久精品国产亚洲7777 | 丝袜五月天 | 中文字幕va | 丝袜五月天 | 中文字幕88 | 九一网站在线观看 | 日本成人a| 成人影视免费 | 久久精品无码Av中文字幕 | 久久av网址 | 日本精品视频一区二区 | 精品美女在线观看 | 韩国三级与黑人 | 啪啪自拍| 国模叶桐尿喷337p人体 | 久久9999久久免费精品国产 | 精品亚洲一区二区三区四区五区 | 可以在线观看的av | 亚洲第一视频区 | 69社| 欧美老女人视频 | 欧美日韩专区 | 亚洲欧洲日韩国产 | 亚洲免费高清视频 | 久久五月天av | 青草国产 | 欧美乱码精品一区二区三区 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 秋霞福利影院 | 亚洲精品午夜国产va久久成人 | 亚洲精品美女视频 | 欧美成人专区 | 精品国产va久久久久久久 | 欧美人与zoxxxx另类 | ass极品水嫩小美女ass | 色在线综合 | 亚洲天堂影院在线观看 | 日韩av片在线免费观看 | 国产九九九九九 | 漂亮人妻洗澡被公强 日日躁 | 亚洲涩涩| 最近日韩中文字幕 | 亚洲精品a | 丰满的女邻居 | 久久黄色影视 |