- basis: an attached groove must have bottom in the CC area; it must have 2+ bottom threads in there.
- difficulty: bottom threads might be intermittent, hence the true number of bottom threads is hard to get; hough-based method is not flexible enough to adapt to all shapes of bottoms.
- solution: find number of bottom threads; find holes between each one of them and chain them up in order.
- detection procedure:
- get bottom-only image
- bottom-CC analysis
- bottom-CC angular grouping
- check bottom-groove-CC ownership: which bottom belongs to which groove.
- those who owns 1+ bottoms are attached.
- enlist those who owns 0 bottoms.
- get bottom-only image
- detaching:
- make sure bottom is there in the gap
- along with each bottom associated with the gap, get the promising top edge points that ensure a constant groove width.
- deteching procedure: (discarded)
- find chains of holes, and the intact bounding top edges
- collect angular widths by holes and its opposite edges, each hole has inner/outer pair of track widths
- from inner "tracks" to outer ones, collect bounding nodes for filler areas, by checking the width consistency against the other "intact" edge; the filled hole boundary track will become the reference for the next adjacent track.
- for chain_holes, filter out noises (off-center)
- sort holes by angular ranges
- the filling order will be, both ends of the attached groove first, i.e., innermost and outermost.
- for each azimuth in gap, search for its opposite edge point across the bottom, by azimuth; if no edge point available, e.g., track in the middle, look for bottom instead, and apply half-width.
- against mean width (or half-width) of pair widths on the side, calc the polar pos of the filler boundary point; polar-to-rect conversion.
- after a pair of boundary is done, make the second thread the reference edge for the next track's first thread.
- remove any ho in the filler area defined by the bounding points.
- cosmetic filler is hard to be done here, e.g., if the missing filler point is near FOV boundary, it is hard to collect reference points if opposite edge is outside of the FOV.
- but we have few choices but to do it here, because it only makes sense to do this bold "data filling" while we know which FOV to fix; in other words, we cannot run the filler process over the entire unwrapped thread or pure edge data without distroting the entire audio signal;
- the best place to insert this sting-removal step is after raw edge detection, and we only work on FOVs that contained attached grooves. This way, we don't have to deal with lots of "holes" and figure out their sides and "opposite" points; the dusty texture would have been removed by the coarse detaching procedure.
- the FOVs that need to be registered include the ones that contain attached grooves, and those around them that share overlaps in the filler area.
- sting-removal procedure:
- for each registered attached groove, get the raw edges
- needs experiment: get the median ratio of half-width to depth, or width to depth, of current CC or all CCs; ignore those azimuths without bottom
- Statistics: for each azimuth of inner/outer, collect ratio = bottom-edge width / depth; if no bottom is available there, skip; this "unavailability" includes the situation where source edge point is at an azimuth that is beyond the angular range of the bottom, e.g., near FOV boundary. WHY? because in its overlap neighbor, this will be solved nicely and then we get back here to fill in the points.
- take median ratio; set a threshold based on median ratio as the numerical reference for the FOV.
- for each azimuth of inner/outer, measure their ratio against the reference, if it's too big (too wide because of the sting), try to find the closer point that makes it as wide as the median, take it as a node.
- Thin gap remedy for missing bottom: if missing bottom at the place, take edge-to-edge width and angularly closest bottom r/z as the imaginary bottom, from the contrived bottom position, extrapolate both edges through median ratio.
- after collecting all new nodes of the FOV, for each holes in inverted-CC analysis, fill holes; save them back into "filter_attach"; redo CC analysis + edge detection.
- finally, get nb-FOVs' corresponding points, and fill them as well; redo CC analysis + edge detection for nb-FOV.
- Side track: in coarse detaching phase, always try starting from the result folder to see if a modification from neighbor FOV has happened, and the current detaching will happen on top of that result.
- Side track: if there are any non-attaching-caused stings, after edge detection, they will be spread and change the topology of the 1D edge. So edge has to be sampled before array-length calibration. NOTE: if calibration is done based on angle range discrepancy, no need to do an extra resample before bottom-1D-from-2D.
Tuesday, October 14, 2008
Attached Grooves: new algo by bottom detection
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment