84 {
85
88
89
90
92 BLOBNBOX_IT blob_it(&blob_block->blobs);
93 for (blob_it.mark_cycle_pt(); !blob_it.cycled_list(); blob_it.forward()) {
94 BLOBNBOX *blob = blob_it.data();
95 double perimeter_area_ratio = blob->cblob()->perimeter() / 4.0;
96 perimeter_area_ratio *= perimeter_area_ratio / blob->enclosed_area();
99 } else {
100 good_grid.InsertBBox(true, true, blob);
101 }
102 }
103 noise_density_ = ComputeNoiseDensity(debug, photo_map, &good_grid);
104 good_grid.Clear();
106 if (debug) {
107 pixWrite("junknoisemask.png", pix, IFF_PNG);
108 }
109 ScrollView *win = nullptr;
110#ifndef GRAPHICS_DISABLED
111 if (debug) {
113 }
114#endif
115
116
120 pix);
121
126
128 MarkAndDeleteNonTextBlobs(&blob_block->noise_blobs, -1, win,
ScrollView::CORAL, pix);
131 if (debug) {
132#ifndef GRAPHICS_DISABLED
133 win->Update();
134#endif
135 pixWrite("junkccphotomask.png", pix, IFF_PNG);
136#ifndef GRAPHICS_DISABLED
138 delete win;
139#endif
140 }
141 return pix;
142}
const double kMinGoodTextPARatio
const int kMaxMediumOverlapsWithSmall
const int kMaxLargeOverlapsWithMedium
const int kMaxLargeOverlapsWithSmall
Image ThresholdToPix(int threshold) const
void InsertBBox(bool h_spread, bool v_spread, BLOBNBOX *bbox)
ScrollView * MakeWindow(int x, int y, const char *window_name)
void InsertBlobList(BLOBNBOX_LIST *blobs)