Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 索贝尔的意义';s在搜索Harris角点时缩放_C++_Opencv_Feature Extraction_Feature Detection_Sobel - Fatal编程技术网

C++ 索贝尔的意义';s在搜索Harris角点时缩放

C++ 索贝尔的意义';s在搜索Harris角点时缩放,c++,opencv,feature-extraction,feature-detection,sobel,C++,Opencv,Feature Extraction,Feature Detection,Sobel,对于中的函数vec,我一直在理解局部变量scale传递到Sobel(从第257行到第263行)的效果: int-depth=src.depth(); 双刻度=(双刻度)(10?孔径大小:3)-1))*块大小; 如果(孔径大小

对于中的函数
vec
,我一直在理解局部变量
scale
传递到
Sobel
(从第257行到第263行)的效果:

int-depth=src.depth();
双刻度=(双刻度)(10?孔径大小:3)-1))*块大小;
如果(孔径大小<0)
比例*=2.0;
如果(深度==CV_8U)
比例*=255.0;
刻度=1.0/刻度;

据我所知,如果
src
CV\u 8UC1
,则刻度将为
1/(255*12)
。应用1/255会将像素的强度标准化为
[0,1]
,但是附加比例
1/12
如何?它的作用是什么?

3x3 Sobel滤波器是通过矩阵乘以导数滤波器[-1 0 1]和平滑滤波器[1 2 1]得到的。当孔径变为5x5时,另一个平滑应用于两个其他滤波器。这些过滤器的“正确”标准化,即使它们相加为1的标准化,对于导数应为1/2,对于平滑应为1/4。因此,3x3过滤器应标准化为1/8,5x5过滤器应标准化为1/128,7x7过滤器应标准化为1/2048。调用r孔径,缩放比例应为: . 可以找到更多细节

此“应”的代码为:

双刻度=1
int depth = src.depth();
double scale = (double)(1 << ((aperture_size > 0 ? aperture_size : 3) - 1)) * block_size;
if( aperture_size < 0 )
    scale *= 2.0;
if( depth == CV_8U )
    scale *= 255.0;
scale = 1.0/scale;
double scale = 1 << (2 * aperture_size - 3);
double scale = 1 << (aperture_size - 1);