more im_aconv() cluster polishing
larger edge buffer, strike out all involved nodes on merge
This commit is contained in:
parent
702ffd3d36
commit
c248b7203d
|
@ -67,8 +67,6 @@ $ vips im_abs diff.v abs.v
|
||||||
$ vips im_max abs.v
|
$ vips im_max abs.v
|
||||||
2.70833
|
2.70833
|
||||||
|
|
||||||
- clustering could be much faster
|
|
||||||
|
|
||||||
- add more bandfmt
|
- add more bandfmt
|
||||||
|
|
||||||
- are we handling mask offset correctly?
|
- are we handling mask offset correctly?
|
||||||
|
@ -106,7 +104,7 @@ $ vips im_max abs.v
|
||||||
/* The number of edges we consider at once in clustering. Higher values are
|
/* The number of edges we consider at once in clustering. Higher values are
|
||||||
* faster, but risk pushing up average error in the result.
|
* faster, but risk pushing up average error in the result.
|
||||||
*/
|
*/
|
||||||
#define MAX_EDGES (10)
|
#define MAX_EDGES (1000)
|
||||||
|
|
||||||
/* Get an (x,y) value from a mask.
|
/* Get an (x,y) value from a mask.
|
||||||
*/
|
*/
|
||||||
|
@ -361,13 +359,27 @@ boxes_cluster2( Boxes *boxes, int cluster )
|
||||||
|
|
||||||
if( edge->d > cluster )
|
if( edge->d > cluster )
|
||||||
break;
|
break;
|
||||||
if( boxes->hline[edge->a].weight == 0 )
|
|
||||||
continue;
|
/* Has been removed, see loop below.
|
||||||
if( boxes->hline[edge->b].weight == 0 )
|
*/
|
||||||
|
if( edge->a == -1 )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
boxes_merge( boxes, edge->a, edge->b );
|
boxes_merge( boxes, edge->a, edge->b );
|
||||||
merged = 1;
|
merged = 1;
|
||||||
|
|
||||||
|
/* Nodes a and b have vanished or been moved. Remove any edges
|
||||||
|
* which refer to them from the edge list,
|
||||||
|
*/
|
||||||
|
for( i = k; i < MAX_EDGES; i++ ) {
|
||||||
|
Edge *edgei = &boxes->edge[i];
|
||||||
|
|
||||||
|
if( edgei->a == edge->a ||
|
||||||
|
edgei->b == edge->a ||
|
||||||
|
edgei->a == edge->b ||
|
||||||
|
edgei->b == edge->b )
|
||||||
|
edgei->a = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return( merged );
|
return( merged );
|
||||||
|
|
Loading…
Reference in New Issue