• Nenhum resultado encontrado

Recupera¸c˜ao Combinando Metadados e Conte´ udo de Imagens DICOM

5.2 A Extens˜ao MedFMI-SiR

5.2.3 Recupera¸c˜ao Combinando Metadados e Conte´ udo de Imagens DICOM

As vers˜oes mais recentes do SGBD Oracle possuem suporte a dados DICOM, por meio do m´odulo Oracle Multimedia DICOM (introduzido na Se¸c˜ao 3.4.2). O m´odulo Multimedia DICOM permite que as imagens DICOM sejam armazenadas no banco de dados utilizando um tipo de dados especial, que extrai os metadados do cabe¸calho da imagem e os armazena em formato XML, utilizando o subsistema de gerenciamento de dados XML nativo do SGBD Oracle. Tendo os dados DICOM armazenados no banco de dados, as aplica¸c˜oes m´edicas que manipulam os bancos de imagens podem se beneficiar de todos os recursos providos pelo SGBD, tais como controle de acesso e seguran¸ca, execu¸c˜ao concorrente, garantia de integridade, entre outros. Al´em disso, armazenando o cabe¸calho das imagens DICOM em XML, ´e poss´ıvel efetuar buscas baseadas em metadados diretamente em senten¸cas SQL.

Para ilustrar a recupera¸c˜ao de imagens combinando metadados e conte´udo de imagens m´edicas no MedFMI-SiR, considere uma rela¸c˜ao para armazenar imagens DICOM definida como segue:

CREATE TABLE exam_images ( img_id INT PRIMARY KEY,

dicom_img ORDDICOM NOT NULL);

onde o atributo img_id ´e um identificador ´unico e o atributo dicom_img armazena as ima- gens DICOM no tipo propriet´ario ORDDICOM, fornecido pelo Oracle Multimedia DICOM. Considere, tamb´em, que existe uma outra rela¸c˜ao associada `a rela¸c˜ao exam_images que guarda os vetores de caracter´ısticas das imagens, definida como:

CREATE TABLE exam_signatures (

img_id INT PRIMARY KEY REFERENCES exam_images(img_id), img_sign BLOB);

onde img_sign ´e o atributo usado para armazenar os vetores de caracter´ısticas das ima- gens. Neste exemplo, utilizam-se duas rela¸c˜oes separadas para guardar os dados relativos `as imagens armazenadas. Embora possa ser utilizada apenas uma rela¸c˜ao, a abordagem adotada de usar duas delas ´e melhor porque em uma institui¸c˜ao m´edica normalmente o banco de imagens ´e compartilhada entre v´arias aplica¸c˜oes usadas na rotina da institui¸c˜ao, sendo que muitas delas n˜ao fazem uso de recupera¸c˜ao por conte´udo, e que a quantidade de imagens armazenadas ´e tipicamente grande (da ordem de milh˜oes de imagens).

Inicialmente, as imagens DICOM devem ser carregadas no banco de dados. Em se- guida, s˜ao invocadas a fun¸c˜ao para extra¸c˜ao de caracter´ısticas do MedFMI-SiR e a fun¸c˜ao para extra¸c˜ao dos metadados do cabe¸calho das imagens (fun¸c˜ao setProperties() do tipo ORDDICOM). Depois disso, ´e poss´ıvel consultar o banco de imagens utilizando opera¸c˜oes baseadas em metadados e opera¸c˜oes baseadas em similaridade.

A opera¸c˜oes de consulta baseadas em metadados utilizam os operadores SQL de con- sulta sobre dados XML do Oracle. J´a as opera¸c˜oes baseadas em similaridade utilizando os operadores fornecidos pelo MedFMI-SiR, sob as diversas formas apresentadas na se¸c˜ao que descreve o FMI-SiRO. Por exemplo, considere a Consulta 15, definida como segue.

Consulta 15: Dentre as 50 imagens de exames mais similares `a imagem de consulta, representada pelo vetor de caracter´ısticas center_sign, retorne aquelas que sejam de s´eries de protocolos de epilepsia de rotina (Routine Epilepsy Protocol ).

A Consulta 15 utiliza uma condi¸c˜ao baseada em metadados (a descri¸c˜ao da s´erie deve ser Routine Epilepsy Protocol ) e uma condi¸c˜ao baseada em similaridade (consulta aos k-vizinhos mais pr´oximos). Esta consulta pode ser expressa no MedFMI-SiR como:

SELECT e.dicom_img

FROM exam_images i, exam_signatures s WHERE i.img_id = s.img_id

AND Manhattan_kNN(s.img_sign, center_sign) <= 50 AND extractValue(i.dicom_img.metadata,

’/DICOM_OBJECT/LONG_STRING[@tag="0008103E"]/text()’) = ’Routine Epilepsy Protocol’;

onde Manhattan_kNN ´e o operador de consulta aos k-vizinhos mais pr´oximos do MedFMI-SiR para a fun¸c˜ao de distˆancia Manhattan, retornando os 50 vizinhos mais pr´oximos a center_sign dentre os valores de img_sign, e extractValue ´e uma fun¸c˜ao que percorre um “arquivo” XML, no caso, a propriedade metadata do atributo dicom_img (definida no tipo ORDDICOM), retornando os valores que casam com a express˜ao de caminho fornecida (’/DICOM OBJECT/LONG STRING[@tag="0008103E"]/text()’). A descri¸c˜ao da s´erie (Series Description) de uma imagem ´e armazenada na tag DICOM (0008,103E), in- formada na express˜ao de caminho da consulta. Toda tupla da rela¸c˜ao exam_images cujo valor de retorno da fun¸c˜ao extractValue seja igual `a string de compara¸c˜ao (’Routine Epilepsy Protocol’) satisfaz a condi¸c˜ao baseada em metadados fornecida.

As consultas com condi¸c˜oes baseadas em metadados DICOM s˜ao bastante custosas, pois exigem recuperar cada tupla da tabela de entrada e processar o arquivo XML con- tendo os metadados. Entretanto, ´e poss´ıvel agilizar muito o processo de busca definindo um ´ındice baseado em fun¸c˜ao sobre o resultado da fun¸c˜ao extractValue. A instru¸c˜ao a seguir define um ´ındice sobre o conte´udo da tag DICOM (0008,103E), para acelerar a consulta apresentada no exemplo:

CREATE INDEX dicom_series_description_ix ON exam_images i ( extractValue(i.dicom_img.metadata,

’/DICOM_OBJECT/LONG_STRING[@tag="0008103E"]/text()’)); indexando o resultado da fun¸c˜ao extractValue para a tag DICOM Series Description. Na verdade, esta instru¸c˜ao adiciona um atributo oculto `a rela¸c˜ao exam_images para arma- zenar o resultado da fun¸c˜ao e cria um ´ındice (B-tree) sobre este atributo. Com a cria¸c˜ao deste ´ındice, a verifica¸c˜ao da condi¸c˜ao baseada em metadados ´e verificada diretamente no ´ındice, evitando o processamento do arquivo XML.

No exemplo, como trata-se de uma busca combinando duas condi¸c˜oes, se houver um ´ındice no atributo image_sign, este ´ındice tamb´em poder´a ser usado na execu¸c˜ao da consulta. O MedFMI-SiR permite gerar planos de execu¸c˜ao alternativos para a consulta, que podem ser explorados para otimizar o desempenho da execu¸c˜ao, dependendo das opera¸c˜oes existentes na consulta e das seletividades das condi¸c˜oes de busca. Esta ´e uma caracter´ıstica herdada do m´odulo FMI-SiRO. Esta potencialidade ´e particularmente ´util

para aplica¸c˜oes sobre grandes bancos de dados complexos, que demandem consultas en- volvendo condi¸c˜oes baseadas em metadados e baseadas em similaridade, como ´e o caso de aplica¸c˜oes m´edicas com suporte a recupera¸c˜ao por conte´udo. Infelizmente, o m´odulo n˜ao ´e capaz de guiar o processador de consultas na tarefa de otimiza¸c˜ao, ficando a cargo do programador a escrita da consulta em sua forma mais eficiente.

5.3

Experimentos Sobre o M´odulo FMI-SiR

O

O m´odulo FMI-SiR foi testado sobre v´arias conjuntos de imagens. Esta se¸c˜ao apresenta resultados de experimentos comparando a recupera¸c˜ao de imagens por conte´udo no SGBD Oracle usando o m´odulo FMI-SiRO e usando o m´odulo padr˜ao de CBIR do Oracle inter-

Media (introduzido na Se¸c˜ao 3.4.2), referenciado nesta se¸c˜ao como Oracle padr˜ao.

O conjunto de imagens utilizada nestes experimentos foi a ALOI3 (Amsterdam Library

of Object Images – biblioteca Amsterdam de imagens de objetos) (Geusebroek et al., 2005), que ´e uma cole¸c˜ao de imagens coloridas de mil pequenos objetos, com 108 imagens de cada objeto, variando a cor de ilumina¸c˜ao, o ˆangulo de ilumina¸c˜ao e o ponto de vista, totalizando 108.000 imagens. A Figura 5.5 apresenta uma amostra das imagens deste conjunto.

Figura 5.5: Amostra das imagens do conjunto ALOI.

O conjunto de imagens foi carregada no banco de dados utilizando os mecanismos de carga em lote. Para cada imagem foram gerados quatro vetores de caracter´ısticas:

1. Oracle padr˜ao: vetor de caracter´ısticas OrdImageSignature, do m´odulo de CBIR do Oracle, que inclui as caracter´ısticas de Cor, Forma e Textura utilizadas pelo m´odulo da Oracle;

2. Histograma: histograma de cores de 256 bins, utilizado pelo FMI-SiRO como vetor

de caracter´ısticas de Cor;

3. Zernike: vetor contendo os primeiros 256 momentos de Zernike, utilizado pelo FMI-SiRO como descritor de Forma; e

4. Haralick: vetor com descritores de Haralick, totalizando 140 caracter´ısticas, utili- zado pelo FMI-SiRO como descritor de Textura.

3

Em seguida, foram realizados v´arios testes em um SGBD Oracle Database 11g Enter- prise Edition Release 11.1.0.6.0 64bit, sobre o sistema operacional Kubuntu GNU/Linux 8.10 64bit, executado em uma m´aquina equipada com um processador Intel Core 2 Quad 2.83GHz, 4GB of mem´oria RAM e um disco r´ıgido SATA2 de 750GB e 7.200RPM. As pr´oximas se¸c˜oes apresentam os resultados destes experimentos.