Example #1
0
def get_similar_image(gid):
    global images
    if len(gid_list) == 0:
        return jsonify(finallyDone=True)
    index = None
    length = len(listCursor)
    #Loop to find location of given gid in sorted list
    for i in range(length):
        if listCursor[i]['gid'] == gid:
            index = i
            break
    closeImages = []
    key = 1
    while len(closeImages) < 10:
        #Looping till an unlabeled image found
        option1 = listCursor[min(index+key,length-1)]
        option2 = listCursor[max(index-key,0)]
        if option1['gid'] in gid_list and not images[option1['gid']][1] and min(index+key,length-1) not in closeImages:
            closeImages.append(min(index+key,length-1))
        if option2['gid'] in gid_list and not images[option2['gid']][1] and max(index-key,0) not in closeImages:
            closeImages.append(max(index-key,0) )
        key += 1

    entropyDistance = [(listCursor[x]['entropy']-listCursor[index]['entropy'])**2 for x in closeImages]
    closest = np.argmin(entropyDistance)
    nextGid = listCursor[closeImages[closest]]['gid']
    images[nextGid][1] = True
    #Opening next file to read info from
    fileName = 'annotation_info/' + ibs.get_image_gnames(nextGid) + '.JSON'
    with open(fileName) as data_file:
        jsonData = json.load(data_file)
    src = return_src(ibs.get_image_paths(nextGid))
    img = ibs.get_images(nextGid)
    return jsonify(image=src,id=nextGid,dim1=img.shape[0],dim2=img.shape[1],FinallyDone=False,data=jsonData,totalImages=totalImages,imagesLeft=len(gid_list))
def runImage(gid,ibs,network_fn):	
	imageLocations = "/home/zach/data/Flukes/CRC_combined constrained/"
	name = imageLocations+ibs.get_image_gnames(gid)
	img = cv2.imread(name)
	img_normed = prepare_img(img)
	img_output = network_fn(img_normed)

	img_output = img_output.swapaxes(1,3)[0]
	args = np.argmax(img_output, axis=2)
	background_mask = args == 2
	whale_mask = args == 1
	seam_mask = args == 0
         
        img_output[:,:][background_mask] = [255,0,0]
        img_output[:,:][whale_mask] = [0,255,255]
        img_output[:,:][seam_mask] = [255,0,255]
	
	gradientImg = np.copy(img_output)
        gradientImg[:,:][background_mask] = 255
        gradientImg[:,:][whale_mask] = 0
        gradientImg[:,:][seam_mask] = 255
        gradientImg = gradientImg.astype(np.uint8)
        gradientvalue = float(np.average(np.absolute(cv2.Laplacian(gradientImg,cv2.CV_64F))))
	
        entrpy = entropy(img_output.swapaxes(0,2))
        entrpy = np.average(entrpy)
        
        bins = []
        bins.append(np.sum(background_mask))
        bins.append(np.sum(whale_mask))
        bins.append(np.sum(seam_mask))   
   
        cv2.imwrite('tmp.png',img_output)
        src = return_src('tmp.png')
	return {'bins':bins,'gid':gid,'png':src,'version':nextVersion,'entropy':float(entrpy),'gradient':gradientvalue} 
Example #3
0
def get_next_image():
    global index
    global images
    if len(gid_list) == 0:
	return jsonify(finallyDone=True)
    while images[gid_list[index]][1]:
	index += 1
	if index == len(gid_list):
	    index = 0
    gid = gid_list[index]
    #Opening stored data from JSON file
    fileName = 'annotation_info/' + ibs.get_image_gnames(gid) + '.JSON'
    with open(fileName) as data_file:
    	jsonData = json.load(data_file)
    src = return_src(ibs.get_image_paths(gid))
    img = ibs.get_images(gid)
    images[gid_list[index]][1] = True
    index += 1
    if index == len(gid_list):
	index == 0
    #sending information to client
    return jsonify(image=src,id=gid,dim1=img.shape[0],dim2=img.shape[1],FinallyDone=False,data=jsonData,totalImages=totalImages,imagesLeft=len(gid_list))