示例#1
0
def get_st_d(hsd_in, he_label, he_mode):
    DEF = cfg.config_const()

    if he_mode == 0:
        lab_val = DEF.H_LABEL
    if he_mode == 1:
        lab_val = DEF.E_LABEL
    elif he_mode == 2:
        lab_val = DEF.B_LABEL
    else:
        print("[ERROR]: HE MODE input fail!")
        lab_val = -1
    np_label = np.array(he_label)
    label_mask = (np_label == lab_val)
    dat_cnt = np.sum(label_mask)
    dat_mask = hsd_in[:, :, 2] * label_mask
    val_min = np.min(dat_mask)
    val_min_mask = label_mask * val_min
    dat_mask_off = dat_mask - val_min_mask
    #dat = ()
    arr_dat = dat_mask_off.reshape(dat_mask_off.shape[0] *
                                   dat_mask_off.shape[1])
    sort_val = sorted(arr_dat)
    sort_val.reverse()
    outs_val = np.array(sort_val) + val_min
    std_val = np.std(outs_val[:dat_cnt])

    return std_val
示例#2
0
def get_landmask(dat, he_label, cxy_mode, he_mode):
    '''

    :param dat:[cx,cy,d]
    :param he_label:  array cx cy d
    :param cxy_mode: cx :0 cy:1
    :param he_mode: h:0 e:1
    :return:
    '''
    DEF = cfg.config_const()

    if he_mode == 0:
        lab_val = DEF.H_LABEL
    elif he_mode == 1:
        lab_val = DEF.E_LABEL
    else:
        print("[ERROR]: HE MODE input fail!")
        lab_val = -1
    np_he_label = np.array(he_label)
    lab = (np_he_label == lab_val)
    dat_cnt = np.sum(lab)
    dat_use = dat[:, :, cxy_mode] * lab
    dat_min = np.min(dat_use)
    dat_off = dat_use - lab * dat_min
    array_dat = dat_off.reshape(dat_off.shape[0] * dat_off.shape[1])
    array_dat.sort(axis=1)  ##?
    array_dat = array_dat + dat_min
    lm1 = array_dat[int(dat_cnt * 0.99)]
    lm25 = array_dat[int(dat_cnt * 0.75)]
    lm50 = array_dat[int(dat_cnt * 0.5)]
    lm75 = array_dat[int(dat_cnt * 0.25)]
    lm99 = array_dat[int(dat_cnt * 0.01)]
    return lm1, lm25, lm50, lm75, lm99
示例#3
0
def get_feature_mean(hsd_dat, he_label, HE_mode):
    '''
    :param hsd_dat:hsd
    :param he_label: h e
    :param mode:0:H 1:E 2:background
    :return:
    '''
    DEF = cfg.config_const()
    if HE_mode == 0:
        label_val = DEF.H_LABEL
    elif HE_mode == 1:
        label_val = DEF.E_LABEL
    elif HE_mode == 2:
        label_val = DEF.B_LABEL
    else:
        print("[ERROR] the mode input fail!")
        label_val = -1
    np_label = np.array(he_label)
    label_mask = (np_label == label_val)
    dat_cnt = np.sum(label_mask)

    dat_sum_cx = np.sum(hsd_dat[:, :, 0] * label_mask)

    dat_sum_cy = np.sum(hsd_dat[:, :, 1] * label_mask)
    dat_sum_d = np.sum(hsd_dat[:, :, 2] * label_mask)

    m_cx = dat_sum_cx / dat_cnt
    m_cy = dat_sum_cy / dat_cnt
    m_d = dat_sum_d / dat_cnt

    return [m_cx, m_cy, m_d]
示例#4
0
def density_transfer_he(hsd_in, he_label, img_info, tmpl_param, img_st_d,
                        tmpl_st_d, he_mode):
    '''

    :param hsd_in:
    :param he_label:
    :param img_info:
    :param tmpl_param:
    :param he_mode:
    :return:
    '''
    DEF = cfg.config_const()
    if he_mode == 0:
        lab_val = DEF.H_LABEL
    elif he_mode == 1:
        lab_val = DEF.E_LABEL
    else:
        print("[ERROR]: HE MODE input fail!")
        lab_val = -1

    hsd_dat = hsd_in * (he_label == lab_val)
    hsd_dat_d = hsd_dat[:, :, 2]

    tmpl_mean = tmpl_param[0]
    tmpl_u = tmpl_mean[lab_val]

    img_mean = img_info[0][0]
    img_u = img_mean[lab_val]

    hsd_dat_d_out = (hsd_dat_d - img_u) / img_st_d * tmpl_st_d + tmpl_u
示例#5
0
def main(unused_argv=None):
    print_mode()
    cfg_run = cfg.config_run()
    cfg_const = cfg.config_const()
    if cfg.init() != 0:
        print("config init fail!")
        return 1
    if cfg_run.mode == cfg_const.TRAIN_MODE:
        train()
    elif cfg_run.mode == cfg_const.EVAL_MODE:
        eval()
    elif cfg_run.mode == cfg_const.TEST_MODE:
        test()
    else:
        print("Input run mode[%s] fail!" % (cfg_run.mode))
    return 0
示例#6
0
def get_landmask_max_min(dat, cxy_mode, he_label):
    '''

    :param dat: [cx cy d] data
    :param cxy_mode: cx:0 cy 1
    :param he_label: h e background label
    :return:
    '''
    DEF = cfg.config_const()
    lab = ((he_label == DEF.H_LABEL) | (he_label == DEF.E_LABEL))
    dat_cnt = np.sum(lab)
    dat_use = dat[:, :, cxy_mode]
    dat_min = np.min(dat_use)
    dat_off = dat_use - lab * dat_min
    arr_dat = dat_off.reshape((dat_off.shape[0] * dat_off.shape[1]))
    arr_dat_sorted = sorted(arr_dat)
    arr_dat_sorted.reverse()
    arr_dat = np.array(arr_dat_sorted) + dat_min
    lm_max = arr_dat[0]
    lm_min = arr_dat[dat_cnt - 1]
    return lm_min, lm_max
示例#7
0
def angle_change(hsd_in, angle, he_mode):
    '''

    :param hsd_in:
    :param he_lable:
    :param tmpl_angle:
    :param he_mode:
    :return:
    '''
    DEF = cfg.config_const()
    if he_mode == 0:
        lab_val = DEF.H_LABEL
    elif he_mode == 1:
        lab_val = DEF.E_LABEL
    else:
        print("[ERROR]: HE MODE input fail!")
        lab_val = -1

    hsd_dat = hsd_in
    hsd_out = hsd_dat * angle[lab_val]

    return hsd_out
示例#8
0
def background_transfer(hsd_in, he_label, img_info, tmpl_param):
    '''

    :param hsd_in: hsd_dat[b][:,:,0:2] Cx Cy D of b kinds of pixels
    :param he_label:
    :param img_info:
    :param tmpl_param:
    :return: hsd_dat[b][:,:,0:2] Cx Cy D of b kinds of pixels after transform
    '''
    DEF = cfg.config_const()

    img_mean = img_info[0][0]
    img_u_b = img_mean[2]

    tmpl_mean = tmpl_param[0]
    tmpl_u_b = tmpl_mean[2]

    hsd_dat = hsd_in * (he_label == DEF.B_LABEL)

    hsd_dat_out = hsd_dat - img_u_b + tmpl_u_b

    return hsd_dat_out
示例#9
0
def landmask_change(hsd_in, he_label, lm_label, img_landmask, tmpl_landmask,
                    cxy_mode):
    '''

    :param hsd_in:
    :param he_label:
    :param lm_label:
    :param img_landmask:
    :param tmpl_landmask:
    :param cxy_mode:
    :return:
    '''
    DEF = cfg.config_const()

    hsd_dat = hsd_in[:, :, cxy_mode] * ((he_label == DEF.H_LABEL) |
                                        (he_label == DEF.E_LABEL))
    img_scaled = np.zeros(hsd_dat.shape)

    for i in range(0, 5):
        img_scaled = (img_scaled) + (hsd_dat * (lm_label == i) *
                                     (img_landmask[i] / tmpl_landmask[i]))

    return img_scaled
示例#10
0
def mean_change(hsd_in, he_label, he_mean, he_mode):
    '''

    :param hsd_in:
    :param he_label:
    :param img_info:
    :param he_mode:
    :return:
    '''
    DEF = cfg.config_const()
    if he_mode == 0:
        lab_val = DEF.H_LABEL
    elif he_mode == 1:
        lab_val = DEF.E_LABEL
    else:
        print("[ERROR]: HE MODE input fail!")
        lab_val = -1

    hsd_dat = hsd_in * (he_label == DEF.H_LABEL | he_label == DEF.E_LABEL)

    mean = he_mean[lab_val]  #h_mean or e_mean
    hsd_dat_out = hsd_dat - mean

    return hsd_dat_out
示例#11
0
def pixels_classify(img, sort_label, labels, w, h):
    label_idx = 0
    img_shape = img.shape
    heb_label = np.zeros((img_shape[0], img_shape[1]))

    DEF = cfg.config_const()

    for i in range(w):
        for j in range(h):
            if (labels[label_idx] == sort_label[0]):
                heb_label[i][j] = DEF.H_LABEL
            if (labels[label_idx] == sort_label[1]):
                heb_label[i][j] = DEF.E_LABEL
            if (labels[label_idx] == sort_label[2]):
                #if a pixel is b classes in k-mean,and its density is lower than 0.2, classify this pixel to background
                if (hsl.pixel_rgb2hsd(img[i][j])[2] < 0.2):
                    heb_label[i][j] = DEF.B_LABEL
            # if a pixel is b classes in k-mean,but its density is higher than 0.2, classify this pixel to cytoplasm
            # and then change its orig label
                else:
                    heb_label[i][j] = DEF.E_LABEL
            label_idx += 1

    return heb_label