即使在明確患有的是心因性勃起障礙,需要正確的心理健康治療才能根治問題,仍是無可奈何地依靠服用犀利士、威而鋼等ED藥物。因為心理疾病難以完全治愈,一定條件下可從新觸發。

Desenvolvimento Java Processamento digital de imagens Vídeo aulas

Carregando uma imagem em um objeto do tipo Mat – PDI 02

O post Carregando uma imagem em um objeto do tipo Mat é uma parte do curso Processamento digital de imagens utilizando a biblioteca OpenCV. O objetivo deste curso é trabalhar com processamento digital de imagens utilizando a linguagem Java juntamente com a biblioteca OpenCV abordado desde a configuração do OpenCv até a utilização dos recursos mais avançados da biblioteca, como por exemplo a detecção facial. O objetivo final é desenvolver um projeto que contenha todos os tópicos abordados sobre o tema Processamento digital de imagens.

Caso não tenha visto a ultima aula acesse  Configurando o OpenCV 3.0 no NetBeans – PDI 01

Carregando uma imagem em um objeto do tipo Mat – PDI 02

O post cria o menu inicial do projeto, as variáveis que serão utilizadas para representar a imagem que será processada digitalmente e inicia o desenvolvimento do método responsável por exibir a imagem na tela.

Carregando uma imagem em um objeto do tipo Mat – PDI 02

Fundamentação teórica OpenCV

Estrutura do Objeto Mat

Mat é basicamente uma classe com duas partes de dados: o cabeçalho matriz (contendo informação, tais como o tamanho da matriz, o método utilizado para o armazenamento, em que o endereço é a matriz armazenada, e assim por diante) e um ponteiro para a matriz contendo a os valores de pixel (de tomar qualquer dimensionalidade dependendo do método escolhido para o armazenamento). O tamanho do cabeçalho matriz é constante, no entanto, o tamanho da matriz em si pode variar de imagem para a imagem e, geralmente, é maior por ordens de grandeza.
Este é sobre como você armazenar os valores de pixel. Você pode selecionar o espaço de cores eo tipo de dados usado. O espaço de cor refere-se à forma como combinamos componentes de cor, de modo a codificar uma determinada cor. O mais simples é a escala de cinza, onde as cores à nossa disposição são preto e branco. A combinação destes permite-nos criar muitos tons de cinza.Obervação: Em vídeos futuros vamos trabalhar ativamente com objetos do tipo Mat e vamos detalhar os divertos tipos de dados utilizados para representar imagens em tons de cinza e coloridas (CvTypes).

Armazenamento dos dados (pixels) em Mat

Para armazenar os pixels em mat é necessário definir o espaço de cor e o tipo de dado para representar esse espaço de cor, como exemplo, representar uma imagem coloria no espaço de cor RGB.
O espaço de cor refere-se à forma como combinamos componentes de cor, de modo a codificar uma determinada cor. O mais simples é a escala de cinza, onde as cores à nossa disposição são preto e branco. A combinação destes permite-nos criar muitos tons de cinza. Para formas coloridas que temos muito mais métodos para escolher. Cada uma delas divide-os em três ou quatro componentes básicos e podemos usar a combinação destes para criar as outras. O mais popular é RGB, principalmente porque esta é também a forma como nosso olho aumenta cores. Suas cores de fundo são vermelho, verde e azul. Para codificar a transparência de uma cor, por vezes, um quarto elemento: alfa (A) é adicionado.
Há, no entanto existe muitos outros sistemas de cores, cada um com suas próprias vantagens:
  • RGB é o mais comum como os nossos olhos usar algo semelhante, no entanto, tenha em mente que o sistema de exibição padrão OpenCV compõe as cores utilizando o espaço de cor BGR. (azul,verde,vermelho).
  • O HSV e HLS é a abreviatura para o sistema de cores formadas pelas componentes hue(matiz), saturation (saturação) e value (valor). (Mais informações)
  • YCrCb é utilizado pelo formato de imagem JPEG populares.
  • CIE L * a * b * é um espaço de cores perceptivelmente uniforme, o que se torna útil se você precisa para medir a distância de uma determinada cor para outra cor.
Cada um dos componentes de construção tem seus próprios domínios válidos. Isto leva ao tipo de dados utilizados. Como armazenamos um componente define o controle que temos sobre seu domínio. O menor tipo de dados possível é char, o que significa um byte ou 8 bits. Isto pode ser assinado (assim pode armazenar os valores de 0 a 255). Embora no caso de três componentes isso já dá 16 milhões de cores possíveis para representar (como no caso de RGB) podemos adquirir um controle melhor utilizando dados do tipo float (4 bytes = 32 bits) ou double (8 byte = 64 bits) tipos para cada componente de cor. No entanto, lembrar que o aumento do tamanho de um componente também aumenta o tamanho de toda a imagem na memória.

Representação da matriz de pixels do objeto Mat na memória do computador

O tamanho da matriz de pixels vai depender do sistema de cor utilizado, mais específico a quantidade de canais utilizados.
No caso de uma imagem em tons de cinza nos teremos uma estrutura parecida com a imagem a seguir:
No caso das imagens com mais de um canal, cada coluna da matriz será formada por sub colunas que representam a quantidade de canais da imagem. No caso de uma imagem RGB a matriz de pixel é representada conforme imagem a seguir. A pri

 

Na aula 4 vamos começar a explicar na prática essa questão dos canais da imagem.
Veja a continuação desse post acessando Exibindo uma imagem do tipo Mat na tela utilizando um label e aprenda a exibir uma imagem em um label.

About the author

Danilo Filitto

Mestre em Ciência da Computação pela Universidade Estadual de Maringá - UEM, Pós-Graduado em Redes de Computadores e Comunicação de Dados pela Universidade do Estado do Paraná - UEL, Bacharel em Ciência da Computação pela Universidade do Oeste Paulista - UNOESTE.

Atuo na área acadêmica como professor desde 2006. Atualmente leciono na UNOESTE (Universidade do Oeste Paulista), no SENAC (Serviço Nacional de Aprendizagem Comercial) e possuo vários cursos na Udemy (https://www.udemy.com/user/danilo-filitto/).

Além disso, sou o CEO dos sites https:www.dfilitto.com.br e https:www.makeindiegames.com.br

Você também pode me encontrar no YouTube por meio do endereço https://www.youtube.com/danilofilittoppr

Aprenda a criar seus próprios jogos

Cursos em promoção

Cursos em destaque

Quer aprender a programar?

Aprenda a criar seus próprios jogos com os melhores desenvolvedores