Пример #1
0
def negative(image):
    '''
    Input: imagem BGR
    Output: None
  '''

    if len(image.shape) > 2:

        #separa as componentes RGB
        B, G, R = cv2.split(image)

        #inverte cada componente
        B_neg = 255 - B
        G_neg = 255 - G
        R_neg = 255 - R

        #merge das componentes
        im_neg = cv2.merge([B_neg, G_neg, R_neg])

        # converte para escala de cinza
        im_neg_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

        # inverte
        im_neg_gray = 255 - im_neg_gray

        # exibe as imagens
        lab1.viewImages([im_neg, im_neg_gray],
                        ['Imagem Negativa', 'Imagem negativa Escala de Cinza'])

    else:
        im_neg = 255 - image  # inverte
        lab1.viewImage(im_neg, 'imagem negativa')  # exibe a imagem

    return saveChanges(image, im_neg)
Пример #2
0
def binarizar_gray(image, limiar=100):
    '''
      Input: imagem - imagem em tons de cinza
             limiar - limiar da binarização, default = 100
      Output: None
  '''
    image[image < limiar] = 1
    image[image >= limiar] = 0

    lab1.viewImage(image)
Пример #3
0
def menu():
    choice = ''
    images = [None, None]
    names = ['', '']

    while (choice is not 'Q' and choice is not 'q'):
        print("************MENU**************")
        #time.sleep(1)
        print()
        choice = input("""
                      A: Carregar imagem
                      B: Exibir imagem
                      C: Salvar imagem
                      D: Exibir negativo
                      E: Equalizar histograma
                      F: Transformação de Intensidade Gray
                      G: Transformação de Potencia
                      H: Binarização de Imagem
                      Q: Sair

                      Imagens no sistema: %s

                      Opção: """ % str(names))

        if choice == "Q" or choice == "q":
            sys.exit

        elif choice == "A" or choice == "a":
            n = 1 - options(images, names,
                            'Qual das imagens deseja sobrescrever?')
            images[n], names[n] = lab1.loadImage()

        elif images[0] is None and images[1] is None:
            print('Nenhuma imagem no sistema')
            print('<Pressione ENTER para continuar>')
            input()

        elif choice == "B" or choice == "b":
            if images[1] is None:
                lab1.viewImage(images[0], names[0])
            elif images[0] is None:
                lab1.viewImage(images[1], names[1])
            else:
                lab1.viewImages(images, names)

        elif choice == "C" or choice == "c":
            n = options(images, names, 'Qual das imagens deseja salvar?')
            lab1.saveImage(images[n])

        elif choice == "D" or choice == "d":
            n = options(images, names, 'Qual das imagens será negativa?')
            images[n] = negative(images[n])

        elif choice == "E" or choice == "e":
            n = options(images, names, 'Qual das imagens será equalizada?')
            if len(images[n].shape) < 3:
                images[n] = equalizeHist_gray(images[n])
            else:
                images[n] = equalizeHist(images[n])

        elif choice == "F" or choice == "f":
            n = options(images, names,
                        'Qual das imagens será transformada (gray)?')
            mudar = input(
                "Deseja mudar os intervalos e valores da transformada (s/n)? ")
            if mudar == 's' or mudar == 'S':
                a, b, alfa, beta, charlie = input(
                    "Qual é o valor do limiar (faixa de valores) 'a' e 'b', e quais os novos valores serão atribuídos aos intervalos 1, 2 e 3? [escrever em uma linha, separado por vírgula] "
                )
            images[n] = trans_intensidade_gray(images[n])

        elif choice == "G" or choice == "g":
            n = options(images, names, 'Qual das imagens será transformada?')
            images[n] = trans_potencia(images[n])

        elif choice == "H" or choice == "h":
            n = options(images, names, 'Qual das imagens será binarizada?')

            value = input('Limiar?  (0 < limiar < 255) :')
            value = int(value)

            if value > 0 and value < 255:
                images[n] = lab1.binarizar(images[n], value)

            #images[n] = binarizar_gray(images[n],float(limiar))

        else:
            print("You must only select either A,B,C,D,E,F,G,H or Q.")
            print("Please try again")
Пример #4
0
def menu():
    choice = ''
    images = [None, None]
    names = ['', '']

    while (choice != 'Q' and choice != 'q'):
        print("************MENU**************")
        #time.sleep(1)
        print()
        choice = input("""
                      A: Carregar imagem
                      B: Exibir imagem
                      C: Salvar imagem
                      D: Detecção de descontinuidades e limiarização 
                      E: Transformada de Hough
                      F: K-means
                      Q: Sair
                      Imagens no sistema: %s
                      Opção: """ % str(names))

        if choice == "Q" or choice == "q":
            sys.exit

        elif choice == "A" or choice == "a":
            n = 1 - options(images, names,
                            'Qual das imagens deseja sobrescrever?')
            images[n], names[n] = lab1.loadImage()

        elif images[0] is None and images[1] is None:
            print('Nenhuma imagem no sistema')
            print('<Pressione ENTER para continuar>')
            input()

        elif choice == "B" or choice == "b":
            if images[1] is None:
                lab1.viewImage(images[0], names[0])
            elif images[0] is None:
                lab1.viewImage(images[1], names[1])
            else:
                lab1.viewImages(images, names)

        elif choice == "C" or choice == "c":
            n = options(images, names, 'Qual das imagens deseja salvar?')
            lab1.saveImage(images[n])

        elif choice == "D" or choice == "d":
            n = options(
                images, names,
                'Qual das imagens será aplicada detecção de descontinuidades e limiarização?'
            )
            images[n] = descontinuidade(images[n])

        elif choice == "E" or choice == "e":
            check = False
            while (not check):

                choice = input("""
                   Qual tranformada aplicar?
                   Circulos(C) ou Linhas(L): """)
                if choice == 'L' or choice == 'l':
                    check = True
                    n = options(
                        images, names,
                        'Qual das imagens será aplicado a Transformada de Hough?'
                    )
                    print("""
                Transformada de Hough(linhas)\n""")
                    limiar = int(input("Qual o valor do limiar?"))
                    images[n] = houghLinhas(images[n], limiar)

                elif choice == 'C' or choice == 'c':
                    check = True
                    n = options(
                        images, names,
                        'Qual das imagens será aplicado a Transformada de Hough?'
                    )
                    print("""
                  Transformada de Hough(circulos)\n""")
                    raioMin = int(
                        input("Qual o valor do raio minimo? (recomendado: 1)"))
                    raioMax = int(
                        input(
                            "Qual o valor do raio maximo? (recomendado: 50)"))
                    images[n] = houghCirculos(images[n], raioMin, raioMax)
                else:
                    print("Opcao invalida")

        elif choice == "F" or choice == "f":
            n = options(images, names,
                        'Qual das imagens será aplicado o K-Means?')
            check = False
            while (not check):

                choice = input("""
                   Deseja usar a imagem em tons de cinza?
                   Sim(S) ou Nao(N): """)
                if choice == 'S' or choice == 's':
                    check = True
                    gray = True

                elif choice == 'N' or choice == 'n':
                    check = True
                    gray = False

            K = int(input("Numero de regioes: "))

            images[n] = kmeans(images[n], gray, K)

        else:
            print("You must only select either A,B,C,D,E,F,G or Q.")
            print("Please try again")
Пример #5
0
def menu():
  choice = ''
  images = [None , None]
  names = ['', '']

  while(choice is not 'Q' and choice is not 'q'):
    print("************MENU**************")
    #time.sleep(1)
    print()
    choice = input("""
                      A: Carregar imagem
                      B: Exibir imagem
                      C: Salvar imagem
                      D: Filtro de Mediana 
                      E: Exibir múltiplos filtros de mediana
                      F: Filtro de Média 
                      G: Filtro Gaussiano
                      H: Filtro Sobel
                      I: Filtro Laplaciano
                      Q: Sair

                      Imagens no sistema: %s

                      Opção: """ % str(names))

    if choice=="Q" or choice=="q":
        sys.exit


    elif choice == "A" or choice =="a":
      n = 1 - options(images, names, 'Qual das imagens deseja sobrescrever?')
      images[n], names[n] = lab1.loadImage()


    elif images[0] is None and images[1] is None:
      print('Nenhuma imagem no sistema')
      print('<Pressione ENTER para continuar>')
      input()
      

    elif choice == "B" or choice =="b":
      if images[1] is None:
        lab1.viewImage(images[0], names[0])
      elif images[0] is None:
        lab1.viewImage(images[1], names[1])
      else:
        lab1.viewImages(images, names)
      

    elif choice == "C" or choice =="c":
      n = options(images, names, 'Qual das imagens deseja salvar?')
      lab1.saveImage(images[n])


    elif choice=="D" or choice=="d":
      n = options(images, names, 'Qual das imagens será aplicado o filtro de mediana?')
      images[n] = calcMaskMedianaUnico(images[n])


    elif choice=="E" or choice=="e":
      n = options(images, names, 'Qual das imagens serão aplicados vários filtros de mediana para serem exibidos??')
      exibirMultiplasMaskMediana(images[n])


    elif choice=="F" or choice=="f":
      n = options(images, names, 'Qual das imagens será aplicado o filtro de Média?')
      images[n] = calcMaskMedia(images[n])
      

    elif choice=="G" or choice=="g":
      n = options(images, names, 'Qual das imagens será aplicado o filtro Gaussiano?')
      images[n] = filterGaussian(images[n])
    

    elif choice=="H" or choice=="h":
      n = options(images, names, 'Qual das imagens será aplicado o filtro Sobel?')
      images[n] = sobel(images[n])

    elif choice=="I" or choice=="i":
      n = options(images, names, 'Qual das imagens será aplicado o filtro Laplaciano?')
      images[n] = laplaciano(images[n])
      
    else:
      print("You must only select A to I or Q.")
      print("Please try again")
Пример #6
0
def menu():
    choice = ''
    images = [None, None]
    names = ['', '']

    while (choice is not 'Q' and choice is not 'q'):
        print("************MENU**************")
        #time.sleep(1)
        print()
        choice = input("""
                      A: Carregar imagem
                      B: Exibir imagem
                      C: Salvar imagem
                      D: Filtro morfológico de erosão 
                      E: Filtro morfológico de dilatação
                      F: Filtro Prewitt
                      G: Filtro Kirsch
                      H: Filtro de Canny
                      I: Filtro bilateral
                      Q: Sair

                      Imagens no sistema: %s

                      Opção: """ % str(names))

        if choice == "Q" or choice == "q":
            sys.exit

        elif choice == "A" or choice == "a":
            n = 1 - options(images, names,
                            'Qual das imagens deseja sobrescrever?')
            images[n], names[n] = lab1.loadImage()

        elif images[0] is None and images[1] is None:
            print('Nenhuma imagem no sistema')
            print('<Pressione ENTER para continuar>')
            input()

        elif choice == "B" or choice == "b":
            if images[1] is None:
                lab1.viewImage(images[0], names[0])
            elif images[0] is None:
                lab1.viewImage(images[1], names[1])
            else:
                lab1.viewImages(images, names)

        elif choice == "C" or choice == "c":
            n = options(images, names, 'Qual das imagens deseja salvar?')
            lab1.saveImage(images[n])

        elif choice == "D" or choice == "d":

            n = options(images, names,
                        'Qual das imagens será aplicado o filtro de erosão?')
            print("Erosão\n")
            mask = int(
                input(
                    "Qual o tamanho da máscara? ex.: 5 - vai ser uma máscara 5x5 \n -->"
                ))
            mask = (mask, mask)
            tipo = -1
            tipo = int(
                input(
                    "Qual o formato da máscara? 0: retangular; 1: elíptica; 2:cruz. \n -->"
                ))
            images[n] = erosao(images[n], mask, tipo)

        elif choice == "E" or choice == "e":
            n = options(
                images, names,
                'Qual das imagens será aplicado o filtro de dilatação?')
            print("Dilatação\n")
            mask = int(
                input(
                    "Qual o tamanho da máscara? ex.: 5 - vai ser uma máscara 5x5 \n -->"
                ))
            mask = (mask, mask)
            tipo = -1
            tipo = int(
                input(
                    "Qual o formato da máscara? 0: retangular; 1: elíptica; 2:cruz. \n -->"
                ))

            images[n] = dilatar(images[n], mask, tipo)

        elif choice == "F" or choice == "f":
            n = options(
                images, names,
                'Qual das imagens será aplicado o filtro de dilatação?')
            images[n] = prewitt(images[n])

        elif choice == "G" or choice == "g":
            n = options(
                images, names,
                'Qual das imagens será aplicado o filtro de dilatação?')
            images[n] = kirsch(images[n])

        elif choice == "H" or choice == "h":
            n = options(images, names,
                        'Qual das imagens será aplicado o filtro de Canny?')
            images[n] = canny(images[n])

        elif choice == "I" or choice == "i":
            n = options(images, names,
                        'Qual das imagens será aplicado o filtro bilateral?')
            images[n] = bilateral(images[n])

        else:
            print("You must only select either A,B,C,D,E,F,G or Q.")
            print("Please try again")
Пример #7
0
def menu():
    choice = ''
    images = [None, None]
    names = ['', '']

    while (choice is not 'Q' and choice is not 'q'):
        print("************MENU**************")
        #time.sleep(1)
        print()
        choice = input("""
                      A: Carregar imagem
                      B: Exibir imagem
                      C: Salvar imagem
                      D: Exibir Histograms
                      E: Calcular imagem-diferença, erro médio quadrático e PSNR
                      F: Alterar a intensidade
                      G: Alterar o brilho
                      H: Fazer sub-amostragem
                      I: Binarizar
                      J: Exibir negativo
                      K: Equalizar histograma
                      L: Transformação de Intensidade Gray
                      M: Transformação de Potencia
                      N: Filtro de Mediana 
                      O: Exibir múltiplos filtros de mediana
                      P: Filtro de Média 
                      R: Filtro Gaussiano
                      S: Filtro Sobel
                      T: Filtro Laplaciano

                      Q: Sair

                      Imagens no sistema: %s

                      Opção: """ % str(names))

        if choice == "Q" or choice == "q":
            sys.exit

        elif choice == "A" or choice == "a":
            n = 1 - options(images, names,
                            'Qual das imagens deseja sobrescrever?')
            images[n], names[n] = lab1.loadImage()

        elif images[0] is None and images[1] is None:
            print('Nenhuma imagem no sistema')
            print('<Pressione ENTER para continuar>')
            input()

        elif choice == "B" or choice == "b":
            if images[1] is None:
                lab1.viewImage(images[0], names[0])
            elif images[0] is None:
                lab1.viewImage(images[1], names[1])
            else:
                lab1.viewImages(images, names)

        elif choice == "C" or choice == "c":
            n = options(images, names, 'Qual das imagens deseja salvar?')
            lab1.saveImage(images[n])

        elif choice == "D" or choice == "d":
            lab1.viewHistograms(images[0])
            lab1.viewHistograms(images[1])

        elif choice == "E" or choice == "e":
            option = 'A'
            if images[0] is None or images[1] is None:
                print(
                    'Sao necessarias duas imagens no sistema para calcular a diferenca'
                )
                option = input('Deseja carregar outra imagem ? A:sim B:nao  :')

                if (option == 'A' or option == 'a') and images[0] is None:
                    images[0], names[0] = lab1.loadImage()
                elif (option == 'A' or option == 'a') and images[1] is None:
                    images[1], names[1] = lab1.loadImage()

            if (option == 'A' or option == 'a'
                ) and images[0] is not None and images[1] is not None:
                lab1.calImgDif(images[0], images[1])

        elif choice == "F" or choice == "f":
            n = options(images, names,
                        'Qual das imagens deseja alterar a intensidade?')

            value = 0
            print(
                '(Utilize valor negativo para diminuir e positivo para aumentar)'
            )
            value = input(
                'A intensidade será alterada em quanto?  [-255,255] :')
            value = int(value)

            if value >= -255 and value <= 255:
                images[n] = lab1.itensidade(images[n], abs(value), (value > 0))

        elif choice == "G" or choice == "g":
            n = options(images, names,
                        'Qual das imagens deseja alterar o brilho?')

            print(
                '(Utilize valor negativo para diminuir e positivo para aumentar)'
            )
            value = input('O brilho será alterado em quanto?  [-255,255] :')
            value = int(value)

            if value >= -255 and value <= 255:
                images[n] = lab1.brightness(images[n], abs(value), (value > 0))

        elif choice == "H" or choice == "h":
            n = options(images, names,
                        'Qual das imagens deseja alterar a amostragem?')

            print(
                ' O valor de amostragem, aqui, representa, aproximadamente, quantos pixels serão unidos em x e y.'
            )
            print(
                ' Este valor é aproximado porque as dimensoes da imagem podem não ser multiplas do valor da amostragem'
            )
            value = input(
                'A amostragem será alterado em quanto?  (0 < amostragem) :')
            value = int(value)

            if value > 0:
                images[n] = lab1.subamostragem(images[n], value)

        elif choice == 'I' or choice == 'i':
            n = options(images, names,
                        'Qual das imagens deseja alterar o limiar?')

            value = input('Limiar?  (0 < limiar < 255) :')
            value = int(value)

            if value > 0 and value < 255:
                images[n] = lab1.binarizar(images[n], value)

        elif choice == "J" or choice == "j":
            n = options(images, names, 'Qual das imagens será negativa?')
            images[n] = lab2.negative(images[n])

        elif choice == "K" or choice == "k":
            n = options(images, names, 'Qual das imagens será equalizada?')
            if len(images[n].shape) < 3:
                images[n] = lab2.equalizeHist_gray(images[n])
            else:
                images[n] = lab2.equalizeHist(images[n])

        elif choice == "L" or choice == "l":
            n = options(images, names,
                        'Qual das imagens será transformada (gray)?')
            mudar = input(
                "Deseja mudar os intervalos e valores da transformada (s/n)? ")
            if mudar == 's' or mudar == 'S':
                a, b, alfa, beta, charlie = input(
                    "Qual é o valor do limiar (faixa de valores) 'a' e 'b', e quais os novos valores serão atribuídos aos intervalos 1, 2 e 3? [escrever em uma linha, separado por vírgula] "
                )
            images[n] = lab2.trans_intensidade_gray(images[n])

        elif choice == "M" or choice == "m":
            n = options(images, names, 'Qual das imagens será transformada?')
            images[n] = lab2.trans_potencia(images[n])

        elif choice == "N" or choice == "n":
            n = options(images, names,
                        'Qual das imagens será aplicado o filtro de mediana?')
            images[n] = lab3.calcMaskMedianaUnico(images[n])

        elif choice == "O" or choice == "o":
            n = options(
                images, names,
                'Qual das imagens serão aplicados vários filtros de mediana para serem exibidos??'
            )
            lab3.exibirMultiplasMaskMediana(images[n])

        elif choice == "P" or choice == "p":
            n = options(images, names,
                        'Qual das imagens será aplicado o filtro de Média?')
            images[n] = lab3.calcMaskMedia(images[n])

        elif choice == "R" or choice == "r":
            n = options(images, names,
                        'Qual das imagens será aplicado o filtro Gaussiano?')
            images[n] = lab3.filterGaussian(images[n])

        elif choice == "S" or choice == "s":
            n = options(images, names,
                        'Qual das imagens será aplicado o filtro Sobel?')
            images[n] = lab3.sobel(images[n])

        elif choice == "T" or choice == "t":
            n = options(images, names,
                        'Qual das imagens será aplicado o filtro Laplaciano?')
            images[n] = lab3.laplaciano(images[n])

        else:
            print("You must only select A to T.")
            print("Please try again")