关于图像分割和hough变换(1)
关于图像分割和hough变换(19_1_3学习进度)
关于图像分割
首先,要想对图像进行数字图像处理,重要的一个步骤是识别图像中的物体,之后才能对不同的物体和信息进行处理。
参考《基于MATLAB的图像处理案例教程》中的说法:
图像分割的含义就是将图像表示为物理上意义的连通区域的集合,更具目标与背景的先验知识,对题像中的目标、背景进行标记定位,然后将目标从背景或者其他伪目标中分离出来…常用于模式识别与图像理解以及图像压缩与编码中。
hough变换是一种边缘分割方式,原理是运用灰度图像的不连续性来识别出图片中的物体与背景,首先检测出图像中的特异点,结合本题目就是黑白图像中的点、线、图形的边缘,然后将存在这些不连续边远的地方组成边界,再用边界分割出区域得到我们需要的物体与背景之间的分割。
关于点、线的检测
Matlab中对于点线的检测可以用imfilter函数进行
首先做了一张直线图
导出格式为TIF,不压缩,像素序列为隔行
参考树上方式设置了间断线的设置:
线段 | 判断模板 |
---|---|
水平线段 | [-1 -1 -1;2 2 2;-1 -1 -1] |
– | – |
正45°线段 | [-1 -1 2;-1 2 -1;2 -1 -1] |
– | – |
垂直线段 | [-1 2 -1;-1 2 -1;-1 2 -1] |
– | – |
负45°线段 | [2 -1 -1;-1 2 -1;-1 -1 2] |
由于为黑白图片,故设置的门限为0(这里仍然有待加深学习)
代码如下
>> X=imread('test_1.tif');
>> w1=[-1 -1 -1;2 2 2;-1 -1 -1];
>> w2=[-1 -1 2;-1 2 -1;2 -1 -1];
>> w3=[-1 2 -1;-1 2 -1;-1 2 -1];
>> w4=[2 -1 -1;-1 2 -1;-1 -1 2];
>> Z1=imfilter(X,w1);
>> Z2=imfilter(X,w2);
>> Z3=imfilter(X,w3);
>> Z4=imfilter(X,w4);
>> Z1=(Z1>60);
>> Z2=(Z2>60);
>> Z3=(Z3>60);
>> Z4=(Z4>60);
>> Z=Z1+Z2+Z3+Z4;
>> Z=Z>0;
>> imshow(X),figure,imshow(Z);
但是运行之后出现错误,提示为:
错误使用 imageDisplayValidateParams>validateCData (line 117)
If input is logical (binary), it must be two-dimensional.
出错 imageDisplayValidateParams (line 27)
common_args.CData = validateCData(common_args.CData,image_type);
出错 imageDisplayParseInputs (line 78)
common_args = imageDisplayValidateParams(common_args);
出错 imshow (line 219)
[common_args,specific_args] = …
查阅后了解到是图片为4维,需要转换为3维,正在学习尚未完成。