예제 #1
0
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()
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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")
예제 #7
0
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")
예제 #8
0
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()
예제 #9
0
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()
예제 #10
0
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)
예제 #11
0
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()
예제 #12
0
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)