def denseExtraction(im, im_special, technique, type, dirImage):
    finalLines = []
    count = 0
    for diametro in [12, 19, 31, 50, 80, 128]:
        radius = diametro / 2.0
        os.system(SURF + " -i " + dirImage + "/" + im_special +
                  " -p1 tmp/dense/points-region-" + str(radius) + "-" + type +
                  ".txt -o " + directory + technique + "/" + type + "/" +
                  im_special[:-4] + "-" + str(radius) +
                  ".key -e 1> tmp/info.txt 2> tmp/errors.txt")
        lines = open(
            directory + technique + "/" + type + "/" + im[:-4] + "-" +
            str(radius) + ".key", "rb").readlines()
        finalLines += lines[2:]
        count += int(lines[1])

        common_functions.organizeFileSurfToDescriptor(directory + technique +
                                                      "/" + type + "/" +
                                                      im[:-4] + "-" +
                                                      str(radius) + ".key")

    out = open(directory + technique + "/" + type + "/" + im[:-3] + "key",
               "wb")
    out.write("129\n" + str(count) + "\n")

    for line in finalLines:
        out.write(line)
    out.close()
def denseExtraction(im, im_special, technique, type, dirImage):
	finalLines = []
	count = 0
	for diametro in [12, 19, 31, 50, 80, 128]:
		radius = diametro/2.0
		os.system(SURF + " -i " + dirImage + "/" + im_special + " -p1 tmp/dense/points-region-" + str(radius) + "-" + type + ".txt -o " + directory + technique + "/" + type + "/" + im_special[:-4] + "-" + str(radius) + ".key -e 1> tmp/info.txt 2> tmp/errors.txt")
		lines = open(directory + technique + "/" + type + "/" + im[:-4] + "-" + str(radius) + ".key","rb").readlines()
		finalLines += lines[2:]
		count += int(lines[1])
		
		common_functions.organizeFileSurfToDescriptor(directory + technique + "/" + type + "/" + im[:-4] + "-" + str(radius) + ".key")
		
	out = open(directory + technique + "/" + type + "/" + im[:-3] + "key","wb")
	out.write("129\n" + str(count) + "\n")
	
	for line in finalLines:
		out.write(line)
	out.close()
            for technique in techniques:
                if os.path.exists(directory + technique + "/" + type + "/" +
                                  im[:-3] + "key"):
                    continue
                fAux = open(
                    directory + technique + "/" + type + "/" + im[:-3] + "key",
                    "wb")

                if technique == "sparse":
                    sparseExtraction(
                        im_special, technique, type,
                        "datasets/" + type + "-images-by-lesions/" +
                        common_functions.specialName(lesion_en))
                    common_functions.organizeFileSurfToDescriptor(directory +
                                                                  technique +
                                                                  "/" + type +
                                                                  "/" +
                                                                  im[:-3] +
                                                                  "key")
                    common_functions.filterPoints(type, technique, im)
                else:
                    denseExtraction(
                        im, im_special, technique, type,
                        "datasets/" + type + "-images-by-lesions/" +
                        common_functions.specialName(lesion_en))
                    common_functions.organizeFileSurfToDescriptor(directory +
                                                                  technique +
                                                                  "/" + type +
                                                                  "/" +
                                                                  im[:-3] +
                                                                  "key")
		print lesion_en
		listImages = os.listdir("datasets/" + type + "-images-by-lesions/" + lesion_en)
		
		start = timeit.default_timer()
		for im in listImages:
			sys.stdout.write(". ")
			sys.stdout.flush()
			im_special = common_functions.specialName(im)
			
			for technique in techniques:
				if os.path.exists(directory + technique + "/" + type + "/" + im[:-3] + "key"): continue
				fAux = open(directory + technique + "/" + type + "/" + im[:-3] + "key","wb")
								
				if technique == "sparse":
					sparseExtraction(im_special, technique, type, "datasets/" + type + "-images-by-lesions/" + common_functions.specialName(lesion_en))
					common_functions.organizeFileSurfToDescriptor(directory + technique + "/" + type + "/" + im[:-3] + "key")
					common_functions.filterPoints(type, technique, im)
				else:
					denseExtraction(im, im_special, technique, type, "datasets/" + type + "-images-by-lesions/" + common_functions.specialName(lesion_en))
					common_functions.organizeFileSurfToDescriptor(directory + technique + "/" + type + "/" + im[:-3] + "key")
			
		stop = timeit.default_timer()
		sys.stdout.write(common_functions.convertTime(stop - start) + "\n")
################################################



################################################
# Describe additional images
# (with marked regions but not labeled as normal or disease)
# Only when DR1 is defined as the training dataset