示例#1
0
def boolean((focused, contrast, saturation, face_score)):
    # focus = maximum different between one of four quads interms of # of focus pixels
    #focus, (means, stddev), face_score = score
    #return focus < 0.1 or (means > 0.05 or stddev > 0.025) #or faces.boolean(face_score)
    focused_mean_diff, focused_std = focused
    sat_mean, sat_std = saturation
    if not faces.boolean(face_score):
        return False
    if contrast > 48:
        return False
    return focused_mean_diff - focused_std * 2 < 0.2 or sat_mean + sat_std <= 96
示例#2
0
def main(progname, *args):

    parser = OptionParser()
    parser.add_option("-f", "--file", dest="filename", default=None,
        help="analyze a given FILE ending in .jpg or .jpeg", metavar="FILE")
    parser.add_option("-i", "--imageset", dest="imageset", default=None,
        help="Runs on a predefined set of algorithms (li,chow,china,custom)")
    parser.add_option("-d", "--debug", dest="debug", action="store_true", default=False,
        help="Enable visual debugging.")
    parser.add_option("-t", "--type", dest="type", default="all",
        help="Specifies the type of feature to debug. Defaults to all.")

    (options, args) = parser.parse_args(list(args))
    
    if options.imageset:
        if options.imageset == 'li':
            process(li_dir)
            return 0
        elif options.imageset == 'chow':
            process(chow_dir)
            return 0
        elif options.imageset == 'china':
            process(china_dir)
            return 0
        elif options.imageset == 'custom':
            process()
            return 0
            
    if not options.filename:
        print "Please specify a file (--file) or image set (--imageset)."
        return 1
    
    if not options.debug:
        process([load_image(options.filename)])
        return 0
        
    if options.filename.startswith('data/'):
        options.filename = options.filename[len('data/'):]
    
    tdata = load_image(options.filename)
    kind = options.type.lower()
    
    size = None #(320,240,'crop') # (0.5, 0.5, 'resize-p')
    if size is None:
        im = tdata.load()
    elif size[-1] == 'crop':
        im = image.random_cropped_region(tdata.load(), size[:2])
    elif size[-1] == 'resize':
        im = tdata.load(size[:2])
    elif size[-1] == 'resize-p':
        im = image.resize(tdata.load(), by_percent=size[:2])
    else:
        raise TypeError, "Invalid image sizing type."
        
    image.show(im, "Image")
    #l,u,v = image.split(image.rgb2luv(im))
    ##cv.Set(l, 128)
    ##cv.EqualizeHist(l, l)
    ##cv.EqualizeHist(u, u)
    ##image.show(image.luv2rgb(image.merge(l,u,v)), "test")
    #s = cv.GetSize(im)
    #t = image.absDiff(u,v)
    #image.show(t, "test")
    #print "Test Score:", cv.CountNonZero(t) / float(s[0] * s[1])
    ##image.show(image.threshold(image.And(u,v), threshold=1), "LUV")

    # noise
    if kind in ('all','noise'):
        noise_img, score = noise.measure(im, debug=True)
        #image.show(noise_img, "Noise Result")
        print 'Noise Score:', score, noise.boolean(score)
    
    # contrast
    if kind in ('all','contrast'):
        contrast_img, score = contrast.measure(im, debug=True)
        #image.show(contrast_img, "Contrast Result")
        print 'Contrast Score:', score, contrast.boolean(score)
    
    # blur
    if kind in ('all','blur','composition'): 
        focused, score = blur.measure(im, debug=kind in ('all','blur'))
        #image.show(focused,  "Blur Result")
        print 'Blur Score:', score, blur.boolean(score)
    
    # composition
    if kind in ('all','composition'):
        composition_img, score = composition.measure(im,
            (focused,score, blur.boolean(score)), debug=True)
        print 'Composition Score:', score, composition.boolean(score)
        
    if kind in ('faces',):
        result, score = faces.measure(im,debug=True)
        print "Face Score:", score, faces.boolean(faces)
    
    #win = CornerTweaker(im)
    #win.show()
    
    #_, sat, _ = image.split(image.rgb2hsv(im))
    #arr = image.cv2array(sat)
    #print arr.mean(), arr.std()
    
    # faces
    #im, score = faces.measure(im, debug=True)
    #print score, faces.boolean(score)
    
    # composition
    #noise_img, score = noise.measure(im, debug=False)
    ##n = (noise_img, score, noise.boolean(score))
    #hulls, score = blur.measure(im, debug=False)
    #b = (hulls, score, blur.boolean(score))
    #cimg, score = composition.measure(im, b, debug=True)
    #print score, composition.boolean(score)
    
    # BLUR
    #from time import time
    #start = time()
    ##im2 = image.threshold(image.laplace(im), threshold=75, type=cv.CV_THRESH_TOZERO)
    #hulls, score = blur.measure(im, debug=True)
    ##blur_img, score = blur.measure(im, debug=True)
    #end = time()
    #print "Time:", (end - start), "seconds"
    #image.show(im,  "image")
    ##image.show(noise_img, "Noise Image")
    #print score, blur.boolean(score)
    
    
    #CONTRAST
    
    #_, score = contrast.measure(im, debug=True)
    #image.show(im, "Image")
    #print score, contrast.boolean(score)

    """
    
    #BLUR
    
    #im2 = image.threshold(image.laplace(im), threshold=75, type=cv.CV_THRESH_TOZERO)
    im3, score = blur.measure(im, debug=True)
    image.show(im,  "image")
    image.show(im3, "Focus Mask")
    print score, blur.boolean(score)
    #plt.show()
    """

    
    #NOISE
    
    #noise_img, score = noise.measure(im, debug=True)
    #image.show(noise_img, "Noise")
    #print score, noise.boolean(score)
    
    
    """
    #hwin = ColorHistograms(im)
    #hwin.show()
    hwin = HistogramWindow(image.rgb2gray(im))
    hwin.show()
    
    print cv.GetSize(im), cv.GetSize(im2)
    print 'blur', papers.blurry_histogram(im)
    #print papers.blurry_histogram(im2)
    
    wind = DerivativeTweaker(im, title="image derivative")
    wind.show()
    
    win = EdgeThresholdTweaker(im, title="image edges")
    win.show(50)#edge_threshold(im))
    
    #win2 = EdgeThresholdTweaker(im2, title="image resized edges")
    #win2.show(edge_threshold(im2))
    """
    cv.WaitKey()
    cv.DestroyAllWindows()
    return 0
def main(progname, *args):

    parser = OptionParser()
    parser.add_option("-f",
                      "--file",
                      dest="filename",
                      default=None,
                      help="analyze a given FILE ending in .jpg or .jpeg",
                      metavar="FILE")
    parser.add_option(
        "-i",
        "--imageset",
        dest="imageset",
        default=None,
        help="Runs on a predefined set of algorithms (li,chow,china,custom)")
    parser.add_option("-d",
                      "--debug",
                      dest="debug",
                      action="store_true",
                      default=False,
                      help="Enable visual debugging.")
    parser.add_option(
        "-t",
        "--type",
        dest="type",
        default="all",
        help="Specifies the type of feature to debug. Defaults to all.")

    (options, args) = parser.parse_args(list(args))

    if options.imageset:
        if options.imageset == 'li':
            process(li_dir)
            return 0
        elif options.imageset == 'chow':
            process(chow_dir)
            return 0
        elif options.imageset == 'china':
            process(china_dir)
            return 0
        elif options.imageset == 'custom':
            process()
            return 0

    if not options.filename:
        print "Please specify a file (--file) or image set (--imageset)."
        return 1

    if not options.debug:
        process([load_image(options.filename)])
        return 0

    if options.filename.startswith('data/'):
        options.filename = options.filename[len('data/'):]

    tdata = load_image(options.filename)
    kind = options.type.lower()

    size = None  #(320,240,'crop') # (0.5, 0.5, 'resize-p')
    if size is None:
        im = tdata.load()
    elif size[-1] == 'crop':
        im = image.random_cropped_region(tdata.load(), size[:2])
    elif size[-1] == 'resize':
        im = tdata.load(size[:2])
    elif size[-1] == 'resize-p':
        im = image.resize(tdata.load(), by_percent=size[:2])
    else:
        raise TypeError, "Invalid image sizing type."

    image.show(im, "Image")
    #l,u,v = image.split(image.rgb2luv(im))
    ##cv.Set(l, 128)
    ##cv.EqualizeHist(l, l)
    ##cv.EqualizeHist(u, u)
    ##image.show(image.luv2rgb(image.merge(l,u,v)), "test")
    #s = cv.GetSize(im)
    #t = image.absDiff(u,v)
    #image.show(t, "test")
    #print "Test Score:", cv.CountNonZero(t) / float(s[0] * s[1])
    ##image.show(image.threshold(image.And(u,v), threshold=1), "LUV")

    # noise
    if kind in ('all', 'noise'):
        noise_img, score = noise.measure(im, debug=True)
        #image.show(noise_img, "Noise Result")
        print 'Noise Score:', score, noise.boolean(score)

    # contrast
    if kind in ('all', 'contrast'):
        contrast_img, score = contrast.measure(im, debug=True)
        #image.show(contrast_img, "Contrast Result")
        print 'Contrast Score:', score, contrast.boolean(score)

    # blur
    if kind in ('all', 'blur', 'composition'):
        focused, score = blur.measure(im, debug=kind in ('all', 'blur'))
        #image.show(focused,  "Blur Result")
        print 'Blur Score:', score, blur.boolean(score)

    # composition
    if kind in ('all', 'composition'):
        composition_img, score = composition.measure(
            im, (focused, score, blur.boolean(score)), debug=True)
        print 'Composition Score:', score, composition.boolean(score)

    if kind in ('faces', ):
        result, score = faces.measure(im, debug=True)
        print "Face Score:", score, faces.boolean(faces)

    #win = CornerTweaker(im)
    #win.show()

    #_, sat, _ = image.split(image.rgb2hsv(im))
    #arr = image.cv2array(sat)
    #print arr.mean(), arr.std()

    # faces
    #im, score = faces.measure(im, debug=True)
    #print score, faces.boolean(score)

    # composition
    #noise_img, score = noise.measure(im, debug=False)
    ##n = (noise_img, score, noise.boolean(score))
    #hulls, score = blur.measure(im, debug=False)
    #b = (hulls, score, blur.boolean(score))
    #cimg, score = composition.measure(im, b, debug=True)
    #print score, composition.boolean(score)

    # BLUR
    #from time import time
    #start = time()
    ##im2 = image.threshold(image.laplace(im), threshold=75, type=cv.CV_THRESH_TOZERO)
    #hulls, score = blur.measure(im, debug=True)
    ##blur_img, score = blur.measure(im, debug=True)
    #end = time()
    #print "Time:", (end - start), "seconds"
    #image.show(im,  "image")
    ##image.show(noise_img, "Noise Image")
    #print score, blur.boolean(score)

    #CONTRAST

    #_, score = contrast.measure(im, debug=True)
    #image.show(im, "Image")
    #print score, contrast.boolean(score)
    """
    
    #BLUR
    
    #im2 = image.threshold(image.laplace(im), threshold=75, type=cv.CV_THRESH_TOZERO)
    im3, score = blur.measure(im, debug=True)
    image.show(im,  "image")
    image.show(im3, "Focus Mask")
    print score, blur.boolean(score)
    #plt.show()
    """

    #NOISE

    #noise_img, score = noise.measure(im, debug=True)
    #image.show(noise_img, "Noise")
    #print score, noise.boolean(score)
    """
    #hwin = ColorHistograms(im)
    #hwin.show()
    hwin = HistogramWindow(image.rgb2gray(im))
    hwin.show()
    
    print cv.GetSize(im), cv.GetSize(im2)
    print 'blur', papers.blurry_histogram(im)
    #print papers.blurry_histogram(im2)
    
    wind = DerivativeTweaker(im, title="image derivative")
    wind.show()
    
    win = EdgeThresholdTweaker(im, title="image edges")
    win.show(50)#edge_threshold(im))
    
    #win2 = EdgeThresholdTweaker(im2, title="image resized edges")
    #win2.show(edge_threshold(im2))
    """
    cv.WaitKey()
    cv.DestroyAllWindows()
    return 0