matlab 非极大值抑制
2016-05-06 16:07
381 查看
function outImg = NonMaxLimit( dx ,dy ) % dx、dy是图像的X、Y方向的梯度 dxy0 = sqrt(dx.^2 + dy.^2); dxy = zeros( size(dxy0) + 2 ); dxy(2:end-1,2:end-1) = dxy0; bw = graythresh(dxy0); outImg = zeros( size(dx) ); for ii = 1:size(dx,1) for jj = 1:size(dx,2) the = atan2( dx(ii,jj) , dy(ii,jj)); absX = abs( dx(ii,jj) ); absY = abs( dy(ii,jj) ); if absX > absY weight = absY / absX; else weight = absX / absY; end % 1 8 7 % 2 * 6 % 3 4 5 v1 = dxy(ii,jj); v2 = dxy(ii+1,jj); v3 = dxy(ii+2,jj); v4 = dxy(ii+2,jj+1); v5 = dxy(ii+2,jj+2); v6 = dxy(ii+1,jj+2); v7 = dxy(ii,jj+2); v8 = dxy(ii,jj+1); if abs(dxy0(ii,jj) <= bw) outImg(ii,jj) = 0; else if the < -pi*3/4 || the < pi/4 g1 = v7; g2 = v6; g3 = v3; g4 = v2; elseif (the > -pi*3/4 && pi<=-pi/2) || (the>pi/4 && the <= pi/2) g1 = v7; g2 = v8; g3 = v3; g4 = v4; elseif (the > -pi/2 && the<-pi/4) || (the > pi/2 && the <= pi*3/4) g1 = v1; g2 = v8; g3 = v5; g4 = v4; elseif (the>-pi/4 && the <= 0) || (the > pi*3/4) g1 = v1; g2 = v2; g3 = v5; g4 = v6; end dTmp1 = weight*g1 + (1-weight)*g2; dTmp2 = weight*g3 + (1-weight)*g4; if( dxy0(ii,jj) >= dTmp1 && dxy0(ii,jj) >= dTmp2 ) outImg(ii,jj) = 1; end end end end end
相关文章推荐
- matlab 直方图均衡化(含rgb)
- Matlab 2016b安装libsvm 3.22
- MATLAB中的常用函数
- matlab常用函数与常用指令大全
- MATLAB去除人声
- Matlab R2014a使用 mcc编译出错的问题
- 写论文第九天:MATLAB之rsindex函数
- matlab gui画图笔记
- 基于支持向量机(SVM)的人脸识别
- 灰度共生矩阵(GLCM)并计算能量、熵、惯性矩、相关性(matlab)(待总结)
- 写论文第八天:MATLAB之leadlagFun函数
- matlab基础
- matlab示例程序--Motion-Based Multiple Object Tracking--卡尔曼多目标跟踪程序--解读
- matlab空间三点求圆心
- matlab diag 函数
- matlab bar函数
- 写论文第七天:MATLAB之movavg函数
- 写论文第六天:MATLAB之leadlag函数
- 雷达截面积(Radar Cross Section,RCS)(MATLAB部分仿真+Code)
- 最小二乘法和主成分分析的比较 matlab 儿子的papa