Python scipy.ndimage.filters.rank_filter() Examples
The following are 5
code examples of scipy.ndimage.filters.rank_filter().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
scipy.ndimage.filters
, or try the search function
.
Example #1
Source File: page.py From doc2text with MIT License | 5 votes |
def reduce_noise_edges(im): structuring_element = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 1)) opening = cv2.morphologyEx(im, cv2.MORPH_OPEN, structuring_element) maxed_rows = rank_filter(opening, -4, size=(1, 20)) maxed_cols = rank_filter(opening, -4, size=(20, 1)) debordered = np.minimum(np.minimum(opening, maxed_rows), maxed_cols) return debordered
Example #2
Source File: crop.py From idmatch with MIT License | 5 votes |
def process_image(path, out_path): orig_im = Image.open(path) scale, im = downscale_image(orig_im) edges = cv2.Canny(np.asarray(im), 100, 200) # TODO: dilate image _before_ finding a border. This is crazy sensitive! _, contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) borders = find_border_components(contours, edges) borders.sort(key=lambda (i, x1, y1, x2, y2): (x2 - x1) * (y2 - y1)) border_contour = None if len(borders): border_contour = contours[borders[0][0]] edges = remove_border(border_contour, edges) edges = 255 * (edges > 0).astype(np.uint8) # Remove ~1px borders using a rank filter. maxed_rows = rank_filter(edges, -4, size=(1, 20)) maxed_cols = rank_filter(edges, -4, size=(20, 1)) debordered = np.minimum(np.minimum(edges, maxed_rows), maxed_cols) edges = debordered contours = find_components(edges) if len(contours) == 0: print '%s -> (no text!)' % path return crop = find_optimal_components_subset(contours, edges) crop = pad_crop(crop, contours, edges, border_contour) crop = [int(x / scale) for x in crop] # upscale to the original image size. text_im = orig_im.crop(crop) text_im.save(out_path) return out_path
Example #3
Source File: crop_morphology.py From oldnyc with Apache License 2.0 | 4 votes |
def process_image(path, out_path): orig_im = Image.open(path) scale, im = downscale_image(orig_im) edges = cv2.Canny(np.asarray(im), 100, 200) # TODO: dilate image _before_ finding a border. This is crazy sensitive! contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) borders = find_border_components(contours, edges) borders.sort(key=lambda (i, x1, y1, x2, y2): (x2 - x1) * (y2 - y1)) border_contour = None if len(borders): border_contour = contours[borders[0][0]] edges = remove_border(border_contour, edges) edges = 255 * (edges > 0).astype(np.uint8) # Remove ~1px borders using a rank filter. maxed_rows = rank_filter(edges, -4, size=(1, 20)) maxed_cols = rank_filter(edges, -4, size=(20, 1)) debordered = np.minimum(np.minimum(edges, maxed_rows), maxed_cols) edges = debordered contours = find_components(edges) if len(contours) == 0: print '%s -> (no text!)' % path return crop = find_optimal_components_subset(contours, edges) crop = pad_crop(crop, contours, edges, border_contour) crop = [int(x / scale) for x in crop] # upscale to the original image size. #draw = ImageDraw.Draw(im) #c_info = props_for_contours(contours, edges) #for c in c_info: # this_crop = c['x1'], c['y1'], c['x2'], c['y2'] # draw.rectangle(this_crop, outline='blue') #draw.rectangle(crop, outline='red') #im.save(out_path) #draw.text((50, 50), path, fill='red') #orig_im.save(out_path) #im.show() text_im = orig_im.crop(crop) text_im.save(out_path) print '%s -> %s' % (path, out_path)
Example #4
Source File: crop_morphology.py From Python-Code with MIT License | 4 votes |
def process_image(path, out_path): orig_im = Image.open(path) scale, im = downscale_image(orig_im) edges = cv2.Canny(np.asarray(im), 100, 200) # TODO: dilate image _before_ finding a border. This is crazy sensitive! contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) borders = find_border_components(contours, edges) borders.sort(key=lambda (i, x1, y1, x2, y2): (x2 - x1) * (y2 - y1)) border_contour = None if len(borders): border_contour = contours[borders[0][0]] edges = remove_border(border_contour, edges) edges = 255 * (edges > 0).astype(np.uint8) # Remove ~1px borders using a rank filter. maxed_rows = rank_filter(edges, -4, size=(1, 20)) maxed_cols = rank_filter(edges, -4, size=(20, 1)) debordered = np.minimum(np.minimum(edges, maxed_rows), maxed_cols) edges = debordered contours = find_components(edges) if len(contours) == 0: print '%s -> (no text!)' % path return crop = find_optimal_components_subset(contours, edges) crop = pad_crop(crop, contours, edges, border_contour) crop = [int(x / scale) for x in crop] # upscale to the original image size. #draw = ImageDraw.Draw(im) #c_info = props_for_contours(contours, edges) #for c in c_info: # this_crop = c['x1'], c['y1'], c['x2'], c['y2'] # draw.rectangle(this_crop, outline='blue') #draw.rectangle(crop, outline='red') #im.save(out_path) #draw.text((50, 50), path, fill='red') #orig_im.save(out_path) #im.show() text_im = orig_im.crop(crop) text_im.save(out_path) print '%s -> %s' % (path, out_path)
Example #5
Source File: crop_morphology.py From PAN-Card-OCR with MIT License | 4 votes |
def process_image(path, out_path): orig_im = Image.open(path) scale, im = downscale_image(orig_im) edges = cv2.Canny(np.asarray(im), 100, 200) # TODO: dilate image _before_ finding a border. This is crazy sensitive! contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) borders = find_border_components(contours, edges) borders.sort(key=lambda (i, x1, y1, x2, y2): (x2 - x1) * (y2 - y1)) border_contour = None if len(borders): border_contour = contours[borders[0][0]] edges = remove_border(border_contour, edges) edges = 255 * (edges > 0).astype(np.uint8) # Remove ~1px borders using a rank filter. maxed_rows = rank_filter(edges, -4, size=(1, 20)) maxed_cols = rank_filter(edges, -4, size=(20, 1)) debordered = np.minimum(np.minimum(edges, maxed_rows), maxed_cols) edges = debordered contours = find_components(edges) if len(contours) == 0: print '%s -> (no text!)' % path return crop = find_optimal_components_subset(contours, edges) crop = pad_crop(crop, contours, edges, border_contour) # upscale to the original image size. crop = [int(x / scale) for x in crop] # draw = ImageDraw.Draw(im) # c_info = props_for_contours(contours, edges) # for c in c_info: # this_crop = c['x1'], c['y1'], c['x2'], c['y2'] # draw.rectangle(this_crop, outline='blue') # draw.rectangle(crop, outline='red') # im.save(out_path) # draw.text((50, 50), path, fill='red') # orig_im.save(out_path) # im.show() text_im = orig_im.crop(crop) text_im.save(out_path) print '%s -> %s' % (path, out_path)