关于图像分割和hough变换(1)

关于图像分割和hough变换(19_1_3学习进度)

关于图像分割

首先,要想对图像进行数字图像处理,重要的一个步骤是识别图像中的物体,之后才能对不同的物体和信息进行处理。

参考《基于MATLAB的图像处理案例教程》中的说法:

图像分割的含义就是将图像表示为物理上意义的连通区域的集合,更具目标与背景的先验知识,对题像中的目标、背景进行标记定位,然后将目标从背景或者其他伪目标中分离出来…常用于模式识别与图像理解以及图像压缩与编码中。

hough变换是一种边缘分割方式,原理是运用灰度图像的不连续性来识别出图片中的物体与背景,首先检测出图像中的特异点,结合本题目就是黑白图像中的点、线、图形的边缘,然后将存在这些不连续边远的地方组成边界,再用边界分割出区域得到我们需要的物体与背景之间的分割。

关于点、线的检测

Matlab中对于点线的检测可以用imfilter函数进行
首先做了一张直线图关于图像分割和hough变换(1)

导出格式为TIF,不压缩,像素序列为隔行
关于图像分割和hough变换(1)

参考树上方式设置了间断线的设置:

线段 判断模板
水平线段 [-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维,正在学习尚未完成。