图像分割
点、线和边缘检测
点检测
点检测在MATLAB中可以用函数imfilter来实现
点检测方法
>> g = abs(imfilter(double(f), w)) >= T
其中f 是输入图像,w是一个合适的点检测掩模, g是结果图像
计算已滤波的图像,即abs(imfilter(double(f),w));
使用来自己滤波的图像的数据找到T的值
将已滤波的图像与T做比较
点检测举例
>> w = [-1 -1 -1;-1 8 -1; -1 -1 -1]; >> g = abs(imfilter(double(f), w)); >> T = max(g(:)); >> g = g>=T;
方法二
>>g = imsubstract(ordfilt2(f, m*n, ones(m, n)),ordfilt2(f, 1, ones(m, n))); >> g = g >= T;
线检测
线检测中对指定方向的线更感兴趣,这种情况下可以与该方向相关的掩模并对其输出做出阈值处理。
检测指定方向的线
>> w = [2 -1 -1 ; -1 2 -1; -1 -1 2]; >> g = imfilter(double(f), w); >> gtop = g(1:120, 1:120); >> gtop = pixeldup(gtop, 4); >> subplot(1,2,1); >> gbot = g(end-119:end, end-119:end); >> gbot = pixeldup(gbot, 4); >> g = abs(g); >> T = max(g(:)); >> g = g >= T;
b