您的位置:首页 > 编程语言 > MATLAB

canny边缘提取之三 双阈值计算 matlab中edge(I,'canny')函数中sselectThresholds()函数的C++转换

2015-05-13 16:17 686 查看
1.matlab函数imhist函数

[B,X]=imhist(A,n)  %A定义为double类型

作用:将0~1区间划分为n个区间,统计矩阵A在各个区间的频率

参数:B--A出现在各个区间的频率

           X--n个区间的每个标记。

解释:X有n个数据0,1./(n-1),2*1./(n-1),3*1./(n-1),4*1./(n-1),5*1./(n-1).......,(n-2)*1./(n-1),1

           如下图所示,具体的区间不是X中数据,而是下图所示,[  0~1./2*(n-1)  ),[  1./2*(n-1)~2*1./2*(n-1)  )......为具体的统计区间

         


matlab代码:

        例子,统计A在10个区间的频率         

hist(1:10)=0;
area=1/9;
half = area/2;
for i=1:size(A,1)*size(A,2)
hist(fix((A(i)+half )/area)+1)=hist(fix((A(i)+half )/area)+1)+1;
end


C++代码:

int histogram[10];
int max = A->width * A->height;
for (int i = 0; i < 10; i++)
{
histogram[i] = 0;
}
float area, half;
area = 1.0 / 9;
half = area / 2.0;
for (int i = 0; i < max; i++)
{
histogram[(int)((gradient->data[i] + half) / area)]++;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: