def probar_perimetro(img): erosionada = transformador.Transformador.aplicar([ colors.AlgoritmoErosion(Filtro(UNOS, 3)), ], img, True) diferencia = transformador.Transformador.aplicar( [colors.AlgoritmoResta(img)], erosionada, True) segman = runcode.run_codes(diferencia) for i in segman.segmentos: print medidas.AreaSegmento(i.elementos).get_valor()
def probar_superficie_ocupada(img_original, img_sup_total): img_perimetros_sup_total = runcode.get_img_perimetros(img_sup_total) segman_sup_total = runcode.run_codes(img_sup_total, img_perimetros_sup_total) area_sup_total = medidas.AreaSegmento( segman_sup_total.get_segmentos()[0]).get_valor() img_segmentada = segmentar(img_original, False) img_perimetros = runcode.get_img_perimetros(img_segmentada) segman = runcode.run_codes(img_segmentada, img_perimetros) segman.eliminar_extremos() area_sum = 0 total_manchas = 0 for i in segman.get_segmentos(): area = medidas.AreaSegmento(i).get_valor() area_sum = area_sum + area total_manchas = total_manchas + 1 #val = medidas.MomentosInvariantes(i, area).get_valor() #d = medidas.DimensionFractal(i).get_valor() #centros.append(val["centro"]) #img_segmentada.putpixel(val["centro"],BLUE) #centrales.append(val["centrales"]) #dimensiones.append(d) #print (dimensiones) #print (centros) #img_segmentada.show() print(total_manchas) print(area_sum) factor_sup_ocup = float(area_sum) / float(area_sup_total) print(factor_sup_ocup) print(factor_sup_ocup * 2 / 3) area_cota = area_sup_total * factor_sup_ocup * 2 / 3 print(area_cota) area_aux = 0 cant_manchas = 0 for i in segman.get_segmentos(): area = medidas.AreaSegmento(i).get_valor() area_aux = area_aux + area cant_manchas = cant_manchas + 1 if area_aux > area_cota: print(cant_manchas) print(area_aux) return superficie_ocupada = float(area_sum) / float(area_sup_total)
def probar_superficie_ocupada(img_original, img_sup_total): img_perimetros_sup_total = runcode.get_img_perimetros(img_sup_total) segman_sup_total = runcode.run_codes(img_sup_total, img_perimetros_sup_total) area_sup_total = medidas.AreaSegmento(segman_sup_total.get_segmentos()[0]).get_valor() img_segmentada = segmentar(img_original, False) img_perimetros = runcode.get_img_perimetros(img_segmentada) segman = runcode.run_codes(img_segmentada, img_perimetros) segman.eliminar_extremos() area_sum = 0 total_manchas = 0 for i in segman.get_segmentos(): area = medidas.AreaSegmento(i).get_valor() area_sum = area_sum + area total_manchas = total_manchas + 1 #val = medidas.MomentosInvariantes(i, area).get_valor() #d = medidas.DimensionFractal(i).get_valor() #centros.append(val["centro"]) #img_segmentada.putpixel(val["centro"],BLUE) #centrales.append(val["centrales"]) #dimensiones.append(d) #print (dimensiones) #print (centros) #img_segmentada.show() print (total_manchas) print (area_sum) factor_sup_ocup = float(area_sum) / float(area_sup_total) print (factor_sup_ocup) print (factor_sup_ocup * 2/3) area_cota = area_sup_total * factor_sup_ocup * 2/3 print (area_cota) area_aux = 0 cant_manchas = 0 for i in segman.get_segmentos(): area = medidas.AreaSegmento(i).get_valor() area_aux = area_aux + area cant_manchas = cant_manchas + 1 if area_aux > area_cota: print (cant_manchas) print (area_aux) return superficie_ocupada = float(area_sum) / float(area_sup_total)
def calcular_regiones(img_original): """ Retornamos la imagen segmentada + el vector de regiones en una tupla (imagen, vector) """ img_segmentada = segmentar(img_original, False) img_perimetros = runcode.get_img_perimetros(img_segmentada) segman = runcode.run_codes(img_segmentada, img_perimetros) regiones = medidas.MedidaAreasPorRegiones(segman, img_original).get_valor() superficie_ocupada = medidas.SuperficieOcupada(segman, img_original).get_valor() #mostrar_segmentada(img_segmentada) return img_segmentada, regiones, superficie_ocupada
def generar_csv(img_original, filename, gen_csv_imagen, gen_csv_segmentos, mostrar_proc): """ mostrar_proc: bool. Si es true, se muestran los pasos del procesamiento. Genera las imagenes segmentadas y de perimetros para luego llamar a generar los csv de imagen y de segmentos. Por ultimo, guarda la imagen con los segmentos pintados. """ img_segmentada = segmentar(img_original, mostrar_proc) img_perimetros = runcode.get_img_perimetros(img_segmentada) segman = runcode.run_codes(img_segmentada, img_perimetros) segman.eliminar_extremos_verticales() if gen_csv_imagen: generar_csv_imagen(img_original, segman, filename + ".medidas_imagen.csv") if gen_csv_segmentos: generar_csv_segmentos(img_original, segman, filename + ".medidas_segmento.csv") img_segmentos_pintados = runcode.pintar_segmentos(segman, (600,600)) img_segmentos_pintados.save(filename + ".segmentos.bmp")
def generar_csv(img_original, filename, gen_csv_imagen, gen_csv_segmentos, mostrar_proc): """ mostrar_proc: bool. Si es true, se muestran los pasos del procesamiento. Genera las imagenes segmentadas y de perimetros para luego llamar a generar los csv de imagen y de segmentos. Por ultimo, guarda la imagen con los segmentos pintados. """ img_segmentada = segmentar(img_original, mostrar_proc) img_perimetros = runcode.get_img_perimetros(img_segmentada) segman = runcode.run_codes(img_segmentada, img_perimetros) segman.eliminar_extremos_verticales() if gen_csv_imagen: generar_csv_imagen(img_original, segman, filename + ".medidas_imagen.csv") if gen_csv_segmentos: generar_csv_segmentos(img_original, segman, filename + ".medidas_segmento.csv") img_segmentos_pintados = runcode.pintar_segmentos(segman, (600, 600)) img_segmentos_pintados.save(filename + ".segmentos.bmp")
def probar_dimension_fractal(img_original): img_segmentada = segmentar(img_original, False) img_segmentada.show() img_perimetros = runcode.get_img_perimetros(img_segmentada) img_perimetros.show() segman = runcode.run_codes(img_segmentada, img_perimetros) segman.eliminar_extremos() #segman.toImage().show() centros = [] centrales = [] dimensiones = [] for i in segman.get_segmentos(): area = medidas.AreaSegmento(i).get_valor() val = medidas.MomentosInvariantes(i, area).get_valor() d = medidas.DimensionFractal(i).get_valor() centros.append(val["centro"]) img_segmentada.putpixel(val["centro"],BLUE) centrales.append(val["centrales"]) dimensiones.append(d) print (dimensiones) print (centros) img_segmentada.show()
def probar_dimension_fractal(img_original): img_segmentada = segmentar(img_original, False) img_segmentada.show() img_perimetros = runcode.get_img_perimetros(img_segmentada) img_perimetros.show() segman = runcode.run_codes(img_segmentada, img_perimetros) segman.eliminar_extremos() #segman.toImage().show() centros = [] centrales = [] dimensiones = [] for i in segman.get_segmentos(): area = medidas.AreaSegmento(i).get_valor() val = medidas.MomentosInvariantes(i, area).get_valor() d = medidas.DimensionFractal(i).get_valor() centros.append(val["centro"]) img_segmentada.putpixel(val["centro"], BLUE) centrales.append(val["centrales"]) dimensiones.append(d) print(dimensiones) print(centros) img_segmentada.show()
def ver_segmentos(img_segmentada, img_perimetros): """ Muestra los diferentes segmentos de la imagen binaria pasada como parametro """ segman = runcode.run_codes(img_segmentada, img_perimetros) runcode.mostrar_segmentos(segman, img_segmentada.size)
def probar_perimetro(img): erosionada = transformador.Transformador.aplicar([colors.AlgoritmoErosion(Filtro(UNOS, 3)),], img, True) diferencia = transformador.Transformador.aplicar([colors.AlgoritmoResta(img)], erosionada, True) segman = runcode.run_codes(diferencia) for i in segman.segmentos: print medidas.AreaSegmento(i.elementos).get_valor()