Horizon Detection using Segmentation and Clustering methods
$30-250 USD
Completed
Posted about 11 years ago
$30-250 USD
Paid on delivery
The main objective of this project is to single out the horizon of a scene out at sea. The mentioned horizon is also known as the waterline that separates water from its background (be it forest or sky). It is proposed to achieve this through segmentation of the scene followed by the use of clustering methods to detect the horizon.
Different clustering methods can be employed. Among these are k-means or intensity-based. The proposed method employs light intensity gradients near the horizon line to detect the exact path where the water region meets the sky (or ground). A common element in horizon scenes is a small and thin region slicing the image in two sections near the horizon path. To detect the described regions near the exact horizon path in images, clustering is used as the main tool. By selecting the sufficient number of clusters, the region of interest can be extracted for further analysis and obstacle detection purposes.
Prior to clustering, pre-processing should be carried out. In an effort to minimize the effects of noise, sharp pixel intensity variations, and removal of false and invalid edges, the image should first be blurred using a Gaussian filter. Clustering is then carried out as the next step for detection of the region of interest. Two types of clustering is encouraged to be used: intensity-based and k-means.
Intensity clustering: This method attempts to cluster based on the pixel intensities. Intensity segmentation is usually performed by dividing the entire intensity spectrum into a fewer number of values through quantization. To further divide the image into distinct segments, similarly valued but non-connected clusters must be labelled as different clusters. To resolve this, connectivity labeling is employed. If two parts in an image share a boundary with non-zero area they are considered connected. Through each iteration of the re-labeling process using this method, the imae is converted to binary for each quantization level. The non-connected regions are subsequently detected and relabeled. The process of detecting and relabeling of the clusters for acquiring a uniquely clustered output image is carried out using the union find algorithm. As the final step of the clustering algorithm, the entire set of clusters and sub-clusters is relabeled from 1 to the sum of total sub-clusters available in the image.
K-means: K-means is a method for classifying a number of objects into a predefined number of clusters. The classification is based on the similarity of each object to the center point of each cluster. That means to say that the object which has the most similarity to the center point of the group is assigned to that cluster. First, a number of center points are selected at random. Then, each point is assigned to a cluster that its center point has smallest distance from the corresponding point. Next, the center points are updated. This updating is done by calculating the average of all current points in the cluster and considering the average as the new center point for that group. Subsequently, all the points are divided into new clusters with new centroids. This process is repeated until a certain convergence criterion is met. Finally, after clustering the image using the k-means method, the union-find algorithm is carried out to ensure unique clusters throughout the image similar to what was done with the intensity clustering technique.
After clustering, the cluster above the exact horizon path needs to be detected. Multiple investigations on clustered images show that the regions of interest maintain a common characteristic. This common feature is minimization of the number of pixels that are members of the region of interest cluster, stretching through the entire image from left to right. By increasing the number of clusters such that the region of interest cluster becomes thinner, this feature will become more apparent.
Images are captured and saved in .jpg extensions.