예제 #1
0
def test_threshold_meanshift_wrong_parameters_2():
    image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)
    try:
        phm_img.threshold_meanshift(image, None)
    except Exception, e:
        assert e.message == 'mean should be a numpy.ndarray'
        assert type(e) == TypeError
예제 #2
0
def test_threshold_meanshift_wrong_parameters_9():
    image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)
    mean_image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)

    try:
        phm_img.threshold_meanshift(image, mean_image, reverse=None)
    except Exception, e:
        assert type(e) == TypeError
예제 #3
0
def test_threshold_meanshift_wrong_parameters_8():
    image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)
    mean_im = numpy.zeros((25, 25, 3), dtype=numpy.uint8)

    try:
        phm_img.threshold_meanshift(image, mean_im, threshold=2)
    except Exception, e:
        assert type(e) == ValueError
예제 #4
0
def test_threshold_meanshift_wrong_parameters_10():
    image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)
    mean_image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)
    mask = [[1, 1, 1]]

    try:
        phm_img.threshold_meanshift(image, mean_image, mask=mask)
    except Exception, e:
        assert type(e) == TypeError
예제 #5
0
def test_threshold_meanshift_wrong_parameters_7():
    image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)
    mean_im = numpy.zeros((25, 25), dtype=numpy.uint8)

    try:
        phm_img.threshold_meanshift(image, mean_im)
    except Exception, e:
        assert e.message == 'mean should be 3D array'
        assert type(e) == ValueError
예제 #6
0
def test_threshold_meanshift_wrong_parameters_6():
    image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)
    mean_im = numpy.zeros((10, 10, 3), dtype=numpy.uint8)

    try:
        phm_img.threshold_meanshift(image, mean_im)
    except Exception, e:
        assert e.message == 'image and mean must have equal sizes'
        assert type(e) == ValueError
예제 #7
0
def test_threshold_meanshift_wrong_parameters_1():
    mean_image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)
    try:
        phm_img.threshold_meanshift(None, mean_image)
    except Exception as e:
        assert str(e) == 'image should be a numpy.ndarray'
        assert type(e) == TypeError
    else:
        assert False
예제 #8
0
def test_threshold_meanshift_wrong_parameters_12():
    image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)
    mean_image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)
    mask = numpy.zeros((25, 26), dtype=numpy.uint8)

    try:
        phm_img.threshold_meanshift(image, mean_image, mask=mask)
    except Exception as e:
        assert type(e) == ValueError
    else:
        assert False
예제 #9
0
def test_threshold_meanshift_wrong_parameters_3():

    image = numpy.zeros((25, 25), dtype=numpy.uint8)
    mean_image = numpy.zeros((25, 25, 3), dtype=numpy.uint8)

    try:
        phm_img.threshold_meanshift(image, mean_image)
    except Exception as e:
        assert str(e) == 'image should be 3D array'
        assert type(e) == ValueError
    else:
        assert False
예제 #10
0
def routine_side_binarization(image, mean_img):
    maks = phm_data.tutorial_data_binarization_mask()

    threshold = 0.3
    dark_background = False

    hsv_min = (30, 11, 0)
    hsv_max = (129, 254, 141)

    # Convert image on HSV representation
    hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    # Threshold the image with HSV min and max value
    binary_hsv_image = phm_img.threshold_hsv(hsv_image, hsv_min, hsv_max,
                                             maks[0])

    # Threshold the image with difference between image and mean_image
    binary_mean_shift_image = phm_img.threshold_meanshift(
        image, mean_img, threshold, dark_background, maks[1])

    # Add the two image
    result = cv2.add(binary_hsv_image, binary_mean_shift_image)

    # Erode and dilate the image to remove possible noise
    result = cv2.medianBlur(result, 3)

    return result
예제 #11
0
def test_threshold_meanshift_4():
    im1 = numpy.zeros((25, 25, 3), numpy.uint8)
    im2 = numpy.zeros((25, 25, 3), numpy.uint8)
    mask = numpy.zeros((25, 25), numpy.uint8)

    mean_im = phm_img.mean_image(list([im1, im2]))

    bin_img = phm_img.threshold_meanshift(im1, mean_im, mask=mask, reverse=True)
    assert bin_img.shape == (25, 25)
예제 #12
0
def test_threshold_meanshift_1():

    im1 = numpy.zeros((25, 25, 3), numpy.uint8)
    im2 = numpy.zeros((25, 25, 3), numpy.uint8)

    mean_im = phm_img.mean_image(list([im1, im2]))

    bin_img = phm_img.threshold_meanshift(im1, mean_im)

    assert bin_img.shape == (25, 25)
예제 #13
0
def test_threshold_meanshift_no_regression_1():

    plant_number = 6
    raw_side_images = phm_data.raw_images(plant_number=plant_number)['side']
    mask = phm_data.tutorial_data_binarization_mask()[1]
    mean_im = phm_img.mean_image(raw_side_images.values())

    im_bin = phm_img.threshold_meanshift(raw_side_images[0], mean_im, mask=mask)

    ref = 158482
    # Acceptation error of 0.01 %
    acceptation_error = ref * 0.001
    if abs(numpy.count_nonzero(im_bin) - ref) > acceptation_error:
        assert False