segmentation_tree
所属分类:图形图像处理
开发工具:matlab
文件大小:177KB
下载次数:28
上传日期:2012-04-19 09:41:55
上 传 者:
dfd fd
说明:
这个软件包包含MATLAB实现了低层次多尺度
分层分割算法
(Segmentation Tree Implementation (version 1.4)
==============================================
This package contains a MATLAB implementation of the low-level multiscale
hierarchical segmentation algorithm)
文件列表:
segmentation_tree (0, 2011-12-09)
segmentation_tree\mex_eliminate_weak_boundaries.mexw32 (8192, 2011-04-24)
segmentation_tree\mex_draw_boundaries_helper.mexw32 (7680, 2011-04-24)
segmentation_tree\mex_label_edge_pixels.mexw32 (13312, 2011-04-24)
segmentation_tree\boundaries4.mexw64 (10752, 2011-05-17)
segmentation_tree\mex_produce_photometric_segmentations.mexa64 (37233, 2011-04-24)
segmentation_tree\mex_eliminate_weak_boundaries.mexmaci64 (9320, 2011-04-24)
segmentation_tree\mex_draw_boundaries_helper.mexmaci64 (8768, 2011-04-24)
segmentation_tree\mex_label_edge_pixels.mexmaci64 (14424, 2011-04-24)
segmentation_tree\mex_produce_photometric_segmentations.mexw64 (35328, 2011-05-17)
segmentation_tree\mex_produce_photometric_segmentations.mexw32 (49152, 2011-04-24)
segmentation_tree\mex_label_edge_pixels.mexa64 (13696, 2011-04-24)
segmentation_tree\CHANGELOG (228, 2011-12-09)
segmentation_tree\grow_cores.p (615, 2011-04-24)
segmentation_tree\mex_compute_areas.mexa64 (8268, 2011-04-24)
segmentation_tree\boundaries4.mexmaci64 (13304, 2011-04-24)
segmentation_tree\mex_grow_cores_helper.mexa64 (13009, 2011-04-24)
segmentation_tree\imsegment.p (1131, 2011-04-24)
segmentation_tree\mex_eliminate_weak_boundaries.mexw64 (8704, 2011-05-17)
segmentation_tree\mex_grow_cores_helper.mexw64 (9216, 2011-05-17)
segmentation_tree\prettify_output.p (669, 2011-04-24)
segmentation_tree\mex_compute_areas.mexw32 (20480, 2011-04-24)
segmentation_tree\mex_compute_areas.mexw64 (7680, 2011-05-17)
segmentation_tree\mex_compute_areas.mexmaci64 (8784, 2011-04-24)
segmentation_tree\compile_mex_files.p (238, 2011-04-24)
segmentation_tree\mex_remove_invalid_edge_pixels.mexw64 (8192, 2011-05-17)
segmentation_tree\version (5, 2011-12-09)
segmentation_tree\mex_label_edge_pixels.mexw64 (15872, 2011-05-17)
segmentation_tree\mex_remove_invalid_edge_pixels.mexa64 (8783, 2011-04-24)
segmentation_tree\mex_remove_invalid_edge_pixels.mexw32 (7680, 2011-04-24)
segmentation_tree\get_region_list.m (23, 2011-04-24)
segmentation_tree\mex_remove_invalid_edge_pixels.mexmaci64 (9320, 2011-04-24)
segmentation_tree\mex_draw_boundaries_helper.mexw64 (9728, 2011-05-17)
segmentation_tree\boundaries4.mexa64 (12711, 2011-04-24)
segmentation_tree\mex_grow_cores_helper.mexmaci64 (13584, 2011-04-24)
segmentation_tree\boundaries4.mexw32 (9728, 2011-04-24)
segmentation_tree\mex_grow_cores_helper.mexw32 (8192, 2011-04-24)
segmentation_tree\mex_eliminate_weak_boundaries.mexa64 (12877, 2011-04-24)
... ...
Segmentation Tree Implementation (version 1.4)
==============================================
This package contains a MATLAB implementation of the low-level multiscale
hierarchical segmentation algorithm described in [1].
Introduction
------------
The goal of low-level image segmentation is to detect all image regions
regardless of their shapes, sizes, and levels of interior homogeneity. Here, a
region is modeled as a connected set of pixels that is surrounded by ramp edge
discontinuities where the magnitude of these discontinuities is large compared
to the variation inside the region. Each region is associated with a scale
depending on the magnitude of discontinuities at the weakest part of its
boundary. Traversing through the range of all possible scales, we obtain all
regions present in the image. Regions strictly merge as the scale increases;
hence a tree is formed where the root node corresponds to the whole image, and
nodes close to the root along a path are large, while their children nodes are
smaller and capture embedded details. Refer to [1] for further details.
Given an input image, the algorithm outputs a tree, called the _segmentation
tree_, which contains all regions present in the input image. The user does not
need to set any input parameters.
Usage
-----
To segment an image, first load it by reading it with +imread+:
----
>> img = imread('myimage.jpg');
----
Then, segment the image with the following command:
----
>> imsegment(img, 'resultsdir');
----
This will produce the photometric segmentations of the input image, and will
save them under the +resultsdir+ directory, which will be created if it doesn't
exist. Next, to obtain the tree, type:
----
regions = get_region_list('resultdir');
----
which will produce a cell array of regions. Each element in this array has the
necessary fields to access the segmentation tree. For example, let us look at
the 50th region, which is +regions\{50\}+:
----
>> regions{50}
ans =
pixels: [909x1 single]
area: 909
boundary: [112x2 single]
contrast: 55
filled_pixels: [976x1 double]
filled_area: 976
children: [105 106 146 144 51 189]
parent: 3
adjacent_regions: [52 65 86]
----
The id of the parent of this region is 3; that is, +regions\{3\}+ is the parent
region of +regions\{50\}+. It has 6 children regions whose ids are
105, 106, 146, 144, 51, and 189. +adjacent_regions+ field gives the list of spatially
neighboring regions which share a boundary fragment with +regions\{50\}+.
There are other fields which give useful information about each region.
+boundary+ field is a matrix containing the x-y coordinates of the boundary
pixels. For example, if you want to visualize the boundary of +regions\{50\}+,
you can simply do:
----
imshow(img); hold on;
plot(regions{50}.boundary(:,2), regions{50}.boundary(:,1), 'r.');
----
which will mark the boundary of the region with red dots. +contrast+ field gives
the photometric scale of the region, i.e. the contrast level at which the region
is detected.
+pixels+ field stores the indices of all pixels of the region. One can convert
these indices to x-y coordinates by using +ind2sub+:
----
[rows, cols] = ind2sub(size(img), regions{50}.pixels);
----
Now, one can plot the whole region itself (not just the boundary) by:
----
imshow(img); hold on;
plot(cols, rows, 'r.');
----
+area+ is the number of pixels in the region.
If the region has any hole(s), +filled_pixels+ stores the indices of all pixels
that are enclosed within the region boundary, and +filled_area+ gives the number
of such pixels. These two fields are empty if the region does not have any
hole(s). One can use these fields to test whether a region contains another.
And finally, the regions that are direct children of the root have -1 as their parent id.
References
----------
If you use this segmentation code in your research, please cite the following papers:
*[1]* Emre Akbas and Narendra Ahuja, "From Ramp Discontinuities to Segmentation
Tree", Asian Conference on Computer Vision (ACCV), 2009.
http://vision.ai.uiuc.edu/publications/accv2009_akbas_ahuja.pdf[fulltext] http://dblp.uni-trier.de/rec/bibtex/conf/accv/AkbasA09[bibtex]
*[2]* Narendra Ahuja, "A Transform for Multiscale Image Segmentation by Integrated
Edge and Region Detection," IEEE Transactions on Pattern Analysis and Machine Intelligence,
Vol. 18, No. 12, December 1996, 1211-1235.
http://vision.ai.uiuc.edu/publications/pami1996_ahuja_segmentation.pdf[fulltext]
http://dblp.uni-trier.de/rec/bibtex/journals/pami/Ahuja96[bibtex]
Contact
-------
For any correspondence about this package, contact Emre Akbas
(eakbas2 at illinois.edu).
近期下载者:
相关文件:
收藏者: