Пример #1
0
def first_the_first_level_rect(crop_length, x_box_length, y_box_length):
    """

    :param crop_length:
    :param x_box_length:
    :param y_box_length:
    :return: the min block top left point index from the ORIGINAL image
    """
    off_set_y = 200
    off_set_x = 240
    rect_firt = []
    crop_length
    #x_box_start = 200
    x_box_length
    #y_box_start = 200
    y_box_length
    mean = np.zeros(((crop_length - x_box_length)/10, (crop_length - y_box_length)/10))
    index_min_mean = np.zeros((14, 2))
    real_index_min_mean = np.zeros((14, 2))
    for picture in range(14):
        source = 'Data\Radiographs\%02d.tif' % (picture + 1)
        raw_img = cv2.imread(source, 0)
        cropped_img = crop(raw_img, 1000, 500, 1000, 1000)
        img = median_filter(cropped_img)
        img = bilateral_filter(img)
        img = top_hat_transform(img)
        img = bottom_hat_transform(img)
        img = sobel(img)

        for i in range(0, np.shape(img)[0] - x_box_length, 10):# x range search
            for j in range(0, np.shape(img)[1] - y_box_length, 10):# y range search
                img_tmp = img[j: (j + y_box_length), i:(i + x_box_length)]
                mean_tmp = float(np.mean(img_tmp))
                mean[i/10, j/10] = mean_tmp

        index_min_mean[picture] = np.where(mean == np.amin(mean, axis = (0,1)))
        real_index_min_mean[picture][0] = index_min_mean[picture][0] + off_set_x
        real_index_min_mean[picture][1] = index_min_mean[picture][1] + off_set_y
        rect_tmp_for_show = img[int(real_index_min_mean[picture][1]): int(real_index_min_mean[picture][1] + y_box_length),
                                int(real_index_min_mean[picture][0]):int((real_index_min_mean[picture][0] + x_box_length))]
        rect_firt.append((img[int(real_index_min_mean[picture][1]): int(real_index_min_mean[picture][1] + y_box_length),
                              int(real_index_min_mean[picture][0]):int((real_index_min_mean[picture][0] + x_box_length))]))
       # cv2.imshow('min_mean area', rect_tmp_for_show)
        #cv2.waitKey(500)
        cv2.imwrite('Data\Configure\init_guess_image-%d.tif' % picture, rect_tmp_for_show)
    return rect_firt, real_index_min_mean
Пример #2
0
        lm = Landmarks(source).show_points()
        # print lm # you can print it to check differences.
        """Initial position guess"""
        ini_pos = np.array([[570, 360, 390], [620, 470, 390], [640, 570, 370],
                            [570, 670, 370], [640, 400, 670], [630, 480, 670],
                            [620, 570, 630], [640, 650, 610]])

        # ini_pos = np.array([[570, 360, 390], [570, 470, 390], [570, 570, 370], [570, 670, 370], [570, 400, 670],
        #                    [470, 500, 680], [470, 590, 630], [470, 650, 610]])
        s = ini_pos[i, 0]
        t = [ini_pos[i, 1], ini_pos[i, 2]]
        Golden_lm = load_training_data(Nr_incisor)
        Golden_lm = rescale_withoutangle(gpa(Golden_lm)[2], t, s)  # Y
        img = cv2.imread('Data/Radiographs/01.tif', 0)
        init_guess_img = img.copy()
        crop_img_ori = crop(img, 1000, 500, 1000, 1000)
        crop_img_init_guess = crop(init_guess_img, 1000, 500, 1000, 1000)
        crop_correct_lm = crop(init_guess_img, 1000, 500, 1000, 1000)
        #=======without crop
        # crop_img_ori = img
        # crop_img_init_guess = init_guess_img
        # crop_correct_lm = init_guess_img
        """Drawing initial guess"""
        #cv2.imshow('first golden model', drawlines(crop_img_init_guess, Golden_lm))
        cv2.imwrite('Data\Configure\init_guess_incisor-%d.tif' % Nr_incisor,
                    drawlines(crop_img_init_guess, Golden_lm))
        cv2.imwrite('Data\Configure\correct_lm_incisor-%d.tif' % Nr_incisor,
                    drawlines(crop_correct_lm, lm))

        #cv2.waitKey(0)
Пример #3
0
import numpy as np
import cv2
from Figure_denoise import crop
from pre_process import Landmarks
if __name__ == '__main__':
    img_raw = cv2.imread('Data/Radiographs/01.tif', 0)
    print(np.shape(img_raw))
    crop_img_ori = crop(img_raw, 1000, 500, 1000, 1000)  # (y, x, xx, yy)
    #cv2.imshow('cropped', crop_img_ori)
    # cv2.waitKey(0)
    mask = np.zeros((1000, 1000), dtype='uint8')

    for incisor in range(8):
        Nr_incisor = incisor + 1
        source = 'Data\Landmarks\c_landmarks\landmarks1-%d.txt' % Nr_incisor
        lm = Landmarks(source).show_points()
        #   print(lm)
        for i in range(np.shape(lm)[0]):
            lm[i, 0] = int(lm[i, 0] - 1000)
            lm[i, 1] = int(lm[i, 1] - 500)
        #  print lm[i, 0]
        #   print lm[i, 1]
        for i in range(np.shape(lm)[0]):
            mask[int(lm[i, 1]), int(lm[i, 0])] = 1

#       for i in range(1000):# x
#            for j in range(1000): # y
#                if i < lm[]
        for i in range(np.shape(lm)[0] - 1):
            mask = cv2.line(mask, (int(lm[i, 0]), int(lm[i, 1])),
                            (int(lm[(i + 1), 0]), int(lm[(i + 1), 1])),
Пример #4
0
    return Landmarks(np.mean(mat, axis=0))


#def evaluation(X, Goldenlm)

if __name__ == '__main__':
    Nr_incisor = 1
    s = 500
    t = [1370, 890]
    Golden_lm = load_training_data(
        Nr_incisor
    )  # the function in util refers to the file which only contains 02-14tif.
    Golden_lm = rescale_withoutangle(gpa(Golden_lm)[2], t, s)
    lm_objects = load_training_data(Nr_incisor)
    landmarks_pca = PCA.ASM(lm_objects)
    #print(np.shape(landmarks_pca.mu_value))
    landmarks_pca_value = rescale_withoutangle(landmarks_pca.mu_value, t, s)

    img = cv2.imread('Data/Radiographs/01.tif', 0)
    img = img.copy()
    img_withlm = drawlines(img, landmarks_pca_value)
    crop_img = crop(img_withlm, 1000, 500, 1000, 1000)

    img = cv2.resize(crop_img, (0, 0), fx=0.5, fy=0.5)
    cv2.imshow('cropped_raw', crop_img)
    #sobel = sobel(crop_img)
    #cv2.imshow('sobel', sobel)
    #median = median_filter(crop_img)
    #cv2.imshow('median', crop_img)
    cv2.waitKey(0)
Пример #5
0
    x_02 = np.shape(14)
    x_03 = np.shape(14)

    y_0 = np.shape(14)
    y_1 = np.shape(14)


    print np.shape(real_start_point) # since here it is right
    final_middle_point = np.zeros((14, 2))
    """This is the final result of middle points"""
    for picture in range(14):
        final_middle_point[picture] = [real_start_point[picture, 0] + 220, real_start_point[picture, 1] + 100]
    for picture in range(14):
        source = 'Data\Radiographs\%02d.tif' % (picture + 1)
        raw_img = cv2.imread(source, 0)
        cropped_img = crop(raw_img, 1000, 500, 1000, 1000)
        img = median_filter(cropped_img)
        img = bilateral_filter(img)
        img = top_hat_transform(img)
        img = bottom_hat_transform(img)
        img = sobel(img)
        #cv2.circle(img, (int(final_middle_point[picture, 0]), int(final_middle_point[picture, 1])), 10, (255, 0, 0), 1)
        #cv2.imshow('center circle', img)
        #cv2.waitKey(500)
        #cv2.imwrite('Data\Configure\init_guess_center_point-%d.tif' % picture, img)

        x_length_top = 400
        x_length_bot = 300
        y_length = 800
        for i in range(14):
            x_00 = int(final_middle_point[i, 0] - (x_length_top/10)*4)