From viniciuscb at gmail.com Thu Jul 14 10:58:54 2005 From: viniciuscb at gmail.com (Vinicius Cubas Brand) Date: Thu Jul 14 10:58:30 2005 Subject: [im-users] =?iso-8859-1?q?D=FAvida_-_bibliteca_IM?= Message-ID: Ol? a todos. Antes de tudo, gostaria de me apresentar: sou Vinicius Cubas Brand, e estou terminando o primeiro semestre do mestrado em inform?tica da UFPR, sob tutoria do prof. H?lio Pedrini. Gostaria tamb?m de parabeniza-los pela iniciativa de fazer uma biblioteca como a IM. Andei fazendo uma pesquisa extensa entre v?rias bibliotecas open-source de processamento de imagens, para escolher qual seria a melhor para que eu pudesse utilizar no meu trabalho de mestrado. Gostei bastante desta biblioteca IM do Tecgraf, pois me pareceu ser a mais f?cil de utilizar e de mudar, se necess?rio. No entanto, estou tendo alguns problemas na hora de utiliz?-la e j? vi alguns erros na documenta??o. Na fun??o imProcessSplitHSI(image,h_depth,s_depth,i_depth), segundo o manual, as 3 imagens h, s, e i s?o do tipo IM_BYTE, mas na verdade elas precisam ser do tipo IM_FLOAT para a fun??o funcionar. A fun??o imProcessMergeHSI parece que recebe apenas imagens do tipo IM_FLOAT como par?metro, mas deste modo n?o funciona mesmo. N?o consegui faz?-la funcionar de jeito nenhum. Segue o programa que estou fazendo: --------------- int main(int argc, char* argv[]) { if (argc < 4) { printf("Invalid number of arguments.\n"); return 1; } // Loads the image from file imImage* image = LoadImage(argv[1]); if (!image) return 1; imImage *h_depth, *s_depth, *i_depth, *outimage, *outimage2; h_depth = imImageCreate(image->width,image->height,IM_GRAY,IM_FLOAT); s_depth = imImageCreate(image->width,image->height,IM_GRAY,IM_FLOAT); i_depth = imImageCreate(image->width,image->height,IM_GRAY,IM_FLOAT); outimage = imImageCreate(image->width,image->height,IM_RGB,IM_FLOAT); outimage2 = imImageCreate(image->width,image->height,IM_RGB,IM_BYTE); imProcessSplitHSI(image,h_depth,s_depth,i_depth); // imProcessExpandHistogram(i_depth,i_depth,.5); imProcessMergeHSI(h_depth,s_depth,i_depth,outimage); imConvertDataType(outimage,outimage2,0,0,0,0); SaveImage(outimage2, argv[2], argv[3]); imImageDestroy(image); imImageDestroy(h_depth); imImageDestroy(s_depth); imImageDestroy(i_depth); imImageDestroy(outimage); imImageDestroy(outimage2); return 0; } -------------- Na verdade, o que acontece ? que aparece uma imagem cinza na sa?da. Estou tentando passar todos os tipos de parametro diferentes, para ver se n?o ? algo que estou fazendo de errado, antes de mexer no c?digo da bibloteca. Por um acaso, existe alguma vers?o mais nova desta biblioteca, que aquela que est? no luaforge? obrigado. Vinicius -- .----------------------. | Vinicius Cubas Brand | | viniciuscb gmail.com | '----------------------' http://www.thyamad.com ------ How do you prevent a drop of water from drying? Throw the drop of water into the ocean. (extracted from the Samsara movie) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://luaforge.net/pipermail/imtoolkit-users/attachments/20050714/a913bbee/attachment.html From scuri at tecgraf.puc-rio.br Thu Jul 14 15:27:58 2005 From: scuri at tecgraf.puc-rio.br (Antonio Scuri) Date: Thu Jul 14 15:27:31 2005 Subject: =?iso-8859-1?Q?Re:_[im-users]_D=FAvida_-_bibliteca_IM?= In-Reply-To: References: Message-ID: <6.2.3.4.0.20050714151153.02614430@mail.tecgraf.puc-rio.br> Ola Vinicius, At 10:58 14/7/2005, Vinicius Cubas Brand wrote: >Gostaria tamb?m de parabeniza-los pela >iniciativa de fazer uma biblioteca como a IM. >Andei fazendo uma pesquisa extensa entre v?rias >bibliotecas open-source de processamento de >imagens, para escolher qual seria a melhor para >que eu pudesse utilizar no meu trabalho de >mestrado. Gostei bastante desta biblioteca IM do >Tecgraf, pois me pareceu ser a mais f?cil de >utilizar e de mudar, se necess?rio. Obrigado. >No entanto, estou tendo alguns problemas na hora >de utiliz?-la e j? vi alguns erros na documenta??o. >Na fun??o >imProcessSplitHSI(image,h_depth,s_depth,i_depth), > segundo o manual, as 3 imagens h, s, e i s?o >do tipo IM_BYTE, mas na verdade elas precisam >ser do tipo IM_FLOAT para a fun??o funcionar. A >fun??o imProcessMergeHSI parece que recebe >apenas imagens do tipo IM_FLOAT como par?metro, >mas deste modo n?o funciona mesmo. N?o consegui >faz?-la funcionar de jeito nenhum. Existe realmente um erro na documentacao, obrigado por aponta-lo. As funcoes atuais so? permitem imagens do tipo IM_FLOAT tanto para Split quanto para Merge. Alem disso as imagens precisam estar normalizadas entre 0-1. Em breve eu estarei atualizando uma versao BETA da IM que vai permitir tambem imagens do tipo IM_BYTE para estas funcoes. Se voce quiser posso lhe enviar um pacote ja? precompilado com a lib, basta voce me dizer qual o compilador que voce esta? usando. Para que o seu codigo funcione com a versao atual voce deve fazer: --------------- int main(int argc, char* argv[]) { if (argc < 4) { printf("Invalid number of arguments.\n"); return 1; } // Loads the image from file imImage* image = LoadImage(argv[1]); if (!image) return 1; if (image->color_space != IM_RGB || image->data_type != IM_BYTE) { printf("Invalid source image.\n"); imImageDestroy(image); return 1; } imImage *tempimage = imImageCreate(image->width,image->height,IM_RGB,IM_FLOAT); imImage * h_depth = imImageCreate(image->width,image->height,IM_GRAY,IM_FLOAT); imImage *s_depth = imImageClone(h_depth); imImage *i_depth = imImageClone(h_depth); imImage *outimage = imImageClone(image); imConvertDataType(image, tempimage, 0, 0, 0, 0); imProcessToneGamut(tempimage, tempimage, IM_GAMUT_NORMALIZE, NULL); imProcessSplitHSI(image, h_depth, s_depth, i_depth); // imProcessExpandHistogram(i_depth,i_depth,.5); imProcessMergeHSI(h_depth,s_depth,i_depth,tempimage); imConvertDataType(tempimage,outimage,0,0,0,0); SaveImage(outimage, argv[2], argv[3]); imImageDestroy(image); imImageDestroy(h_depth); imImageDestroy(s_depth); imImageDestroy(i_depth); imImageDestroy(outimage); imImageDestroy(tempimage); return 0; } Uma forma mais facil de testar os algoritmos e? usar o IMLAB: http://www.tecgraf.puc-rio.br/~scuri/imlab Atenciosamente, Antonio Scuri