Name
openingopeningOpeningOpening — Auftrennen von Lücken.
Die openingopeningOpeningOpeningOpening-Operation ist als die
Hintereinanderschaltung von Erosion und Minkowsi-Addition definiert.
Durch Anwendung von openingopeningOpeningOpeningOpening bleiben größere Strukturen
weitgehend erhalten, kleine Regionen wie Linien und Punkte sowie
feine Strukturen werden gelöscht. Im Gegensatz dazu bewirkt eine
closingclosingClosingClosingClosing-Operation, dass kleine Unterbrechungen, Lücken
und Risse erhalten bleiben bzw. ausgefüllt werden (siehe hierzu
closingclosingClosingClosingClosing).
openingopeningOpeningOpeningOpening dient zur Elimination von kleinen Regionen
(kleiner als StructElementStructElementStructElementStructElementstructElement) und zum Glätten der Ränder.
openingopeningOpeningOpeningOpening verwendet intern als Bezugspunkt den Schwerpunkt
des strukturierenden Elementes. Die Position von
StructElementStructElementStructElementStructElementstructElement ist aber ohne Bedeutung, da Opening
translationsinvariant gegenüber dem strukturierende Element ist.
StructElementStructElementStructElementStructElementstructElement kann mit Operatoren wie gen_circlegen_circleGenCircleGenCircleGenCircle,
gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1GenRectangle1, gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2, gen_ellipsegen_ellipseGenEllipseGenEllipseGenEllipse,
draw_regiondraw_regionDrawRegionDrawRegionDrawRegion, gen_region_polygongen_region_polygonGenRegionPolygonGenRegionPolygonGenRegionPolygon,
gen_region_pointsgen_region_pointsGenRegionPointsGenRegionPointsGenRegionPoints, etc. erzeugt werden.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
Regionen, die verarbeitet werden sollen.
Strukturierendes Element (lageinvariant).
Ergebnis des Opening-Operators.
* Large regions in an aerial picture (beech trees or meadows):
read_image(Image,'forest_road')
threshold(Image,Light,160,255)
gen_circle(StructElement,100,100,10)
* selecting the large regions
opening(Light,StructElement,Large)
* Selecting of edges with certain orientation:
read_image(Image,'fabrik')
sobel_amp(Image,Sobel,'sum_abs',3)
threshold(Sobel,Edges,10,255)
gen_rectangle2(StructElement,100,100,3.07819,20,1)
opening(Edges,StructElement,Direction)
/* simulation of opening */
my_opening(Hobject In, Hobject StructElement, Hobject *Out)
{
Hobject H;
erosion1(In,StructElement,&H,1);
minkowski_add1(H,StructElement,Out,1);
clear_obj(H);
}
/* Large regions in an aerial picture (beech trees or meadows): */
read_image(&Image,"forest_road");
threshold(Image,&Light,160.0,255.0);
gen_circle(&StructElement,100.0,100.0,10.0);
/* selecting the large regions */
opening(Light,StructElement,&Large);
/* Selecting of edges with certain orientation: */
read_image(&Image,"fabrik");
sobel_amp(Image,&Sobel,"sum_abs",3);
threshold(Sobel,Edges,30.0,255.0);
gen_rectangle2(&StructElement,100.0,100.0,3.07819,20.0,1.0);
opening(Edges,StructElement,&Direction);
* Large regions in an aerial picture (beech trees or meadows):
read_image(Image,'forest_road')
threshold(Image,Light,160,255)
gen_circle(StructElement,100,100,10)
* selecting the large regions
opening(Light,StructElement,Large)
* Selecting of edges with certain orientation:
read_image(Image,'fabrik')
sobel_amp(Image,Sobel,'sum_abs',3)
threshold(Sobel,Edges,10,255)
gen_rectangle2(StructElement,100,100,3.07819,20,1)
opening(Edges,StructElement,Direction)
* Large regions in an aerial picture (beech trees or meadows):
read_image(Image,'forest_road')
threshold(Image,Light,160,255)
gen_circle(StructElement,100,100,10)
* selecting the large regions
opening(Light,StructElement,Large)
* Selecting of edges with certain orientation:
read_image(Image,'fabrik')
sobel_amp(Image,Sobel,'sum_abs',3)
threshold(Sobel,Edges,10,255)
gen_rectangle2(StructElement,100,100,3.07819,20,1)
opening(Edges,StructElement,Direction)
* Large regions in an aerial picture (beech trees or meadows):
read_image(Image,'forest_road')
threshold(Image,Light,160,255)
gen_circle(StructElement,100,100,10)
* selecting the large regions
opening(Light,StructElement,Large)
* Selecting of edges with certain orientation:
read_image(Image,'fabrik')
sobel_amp(Image,Sobel,'sum_abs',3)
threshold(Sobel,Edges,10,255)
gen_rectangle2(StructElement,100,100,3.07819,20,1)
opening(Edges,StructElement,Direction)
Sei F1 die Fläche einer Eingaberegion und F2 die Fläche des
strukturierenden Elementes, dann ist die Laufzeitkomplexität für
eine Region:
Bei korrekter Parametrisierung liefert die Funktion
openingopeningOpeningOpeningOpening den Wert 2 (H_MSG_TRUE). Das Funktionsverhalten für
die beiden Fälle leere und keine Eingaberegion lässt sich wie
folgt kontrollieren:
-
keine Region:
set_system('no_object_result',<RegionResult>)
-
leere Region:
set_system('empty_region_result',<RegionResult>)
Andernfalls wird eine Fehlerbehandlung durchgeführt.
thresholdthresholdThresholdThresholdThreshold,
regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing,
connectionconnectionConnectionConnectionConnection,
union1union1Union1Union1Union1,
watershedswatershedsWatershedsWatershedsWatersheds,
class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNorm,
gen_circlegen_circleGenCircleGenCircleGenCircle,
gen_ellipsegen_ellipseGenEllipseGenEllipseGenEllipse,
gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1GenRectangle1,
gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2,
draw_regiondraw_regionDrawRegionDrawRegionDrawRegion,
gen_region_pointsgen_region_pointsGenRegionPointsGenRegionPointsGenRegionPoints,
gen_region_polygon_filledgen_region_polygon_filledGenRegionPolygonFilledGenRegionPolygonFilledGenRegionPolygonFilled
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain,
select_shapeselect_shapeSelectShapeSelectShapeSelectShape,
area_centerarea_centerAreaCenterAreaCenterAreaCenter,
connectionconnectionConnectionConnectionConnection
minkowski_add1minkowski_add1MinkowskiAdd1MinkowskiAdd1MinkowskiAdd1,
erosion1erosion1Erosion1Erosion1Erosion1,
opening_circleopening_circleOpeningCircleOpeningCircleOpeningCircle
gen_circlegen_circleGenCircleGenCircleGenCircle,
gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2,
gen_region_polygongen_region_polygonGenRegionPolygonGenRegionPolygonGenRegionPolygon
Foundation