{"id":573,"date":"2013-04-08T23:34:00","date_gmt":"2013-04-09T02:34:00","guid":{"rendered":"http:\/\/www.taioque.com.br\/?p=573"},"modified":"2013-04-27T20:24:25","modified_gmt":"2013-04-27T23:24:25","slug":"script-matlab-usando-cesus-e-chi-quadrado-para-reconhecimento-facial","status":"publish","type":"post","link":"http:\/\/www.networktips.com.br\/?p=573","title":{"rendered":"Script &#8211; Matlab usando Census e Chi-quadrado, para reconhecimento facial"},"content":{"rendered":"<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_toolbar\" href=\"https:\/\/www.hupso.com\/share\/\"><img src=\"http:\/\/static.hupso.com\/share\/buttons\/dot.png\" style=\"border:0px; padding-top: 5px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_t=new Array(\"Twitter\",\"Facebook\",\"Google Plus\",\"Linkedin\",\"Email\");var hupso_background_t=\"#EAF4FF\";var hupso_border_t=\"#66CCFF\";var hupso_toolbar_size_t=\"medium\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"jorgeltaioque\";var hupso_url_t=\"\";var hupso_title_t=\"Script%20-%20Matlab%20usando%20Census%20e%20Chi-quadrado%2C%20para%20reconhecimento%20facial\";<\/script><script type=\"text\/javascript\" src=\"http:\/\/static.hupso.com\/share\/js\/share_toolbar.js\"><\/script><!-- Hupso Share Buttons --><\/div><pre lang=\"php\" line=\"1\" escaped=\"true\">\r\n%limpando variaveis e terminal.\r\n%cleaning the variables and terminal\r\nclear all;\r\nclose all;\r\nclc;\r\n\r\n%inicia contador de tempo\r\n%start counter of time\r\ntic;\r\n\r\n%procura imagem inicial\r\n%Search initial image\r\nimagefiles = dir('*.pgm');      \r\nnfiles = length(imagefiles);  \r\n\tforResult = zeros(1,nfiles);\r\n\ty = randi([1, nfiles]);\r\n\t\r\n\tfor ii=1:nfiles\r\n\t\tif (ii == y)\r\n\t\tcurrentfilename = imagefiles(ii).name;\r\n\t\tinputImage = imread(currentfilename);\r\n\t\timages{ii} = inputImage;\r\n\t\tend\r\n\tend\r\n\r\n\r\n\t\tinputImage=inputImage;\r\n\t\tdiferente = currentfilename;\r\n\r\n%seta tamanho da janela de verifica\u00e7\u00e3o\r\n%set window size\r\nwindowSize=3;\r\n\r\ninputImage=inputImage;\r\n\r\n\r\n%executa fun\u00e7\u00e3o cesus\r\n%execuit function cesus\r\n[nr,nc] = size(inputImage);\r\n\r\nbits=uint32(0);\r\n      \r\nres=uint32(zeros(nr,nc));\r\n\r\nC= (windowSize-1)\/2;\r\nfor(j=C+1:1:nc-C) \r\n\tfor(i=C+1:1:nr-C) \r\n\tcensus = 0; \r\n\t\tfor (a=-C:1:C) \r\n\t\t\tfor (b=-C:1:C) \r\n\t\t\t\tif (~(a==0 && b==0)) \r\n\t\t\t\tcensus=bitshift(census,1); \r\n\t\t\t\t\tif (inputImage(i+a,j+b) < inputImage(i,j))\r\n\t\t\t\t\tcensus=census+1;\r\n\t\t\t\t\tend\r\n\t\t\t\tend\r\n\t\t\tend\r\n\t\tend\r\n\tres(i,j) = census;\r\n\tend\r\nend\r\n\r\n\r\n\r\n%pega parametros da imagen para criar histograma\r\n%get parameters of image to create histogram\r\nlarg = size(res,2) ;\r\nalt  = size(res,1) ;\r\nminimo = min(min(res)) ;\r\nmaximo = max(max(res)) ;\r\nimg_contraste = 255 * ( double(res - minimo) \/ double(maximo - minimo) );\r\n\r\nhistograma = zeros(1,256) ;\r\n\r\n%criando histograma\r\n%creating histegram\r\nfor i = 1 : alt\r\n    for j = 1 : larg\r\n        histograma(floor(img_contraste(i,j)+1)) = histograma(floor(img_contraste(i,j)+1)) + 1 ;\r\n    end\r\nend\r\n\r\n\t%calculando histograma\r\n\t%calculating histogram\r\n\tresultado1 = sum(histograma);\r\n\r\n\t%mostra resultados na janela figura\r\n\t%show results in window figure\r\n\tfigure,\r\n\tsubplot(2,3,1); plot(1:256,histograma,'-b');\r\n\tsubplot(2,3,2); imshow(res,[0 128]);\r\n\tsubplot(2,3,3); imshow(inputImage);\r\n\tdrawnow \r\n\r\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r\n\t%procura imagen canditada \r\n\t%Search image candidate\r\n\timagefiles = dir('*.pgm');      \r\n\tnfiles = length(imagefiles);  \r\n\t\r\n\t%Vector of results\r\n\t%Vetor de resultados\r\n\tforResult = zeros(1,nfiles);\r\n\tresultchi = 999999999999999;\r\n\t\r\n\tfor ii=1:nfiles\r\n\r\n\tcurrentfilename = imagefiles(ii).name;\r\n\r\n\tz = strcmp( currentfilename, diferente );\r\n\tif (z==0)\r\n\r\n\tinputImage2 = imread(currentfilename);\r\n\timages{ii} = inputImage2;\r\n\r\n\r\nwindowSize=3;\r\n\r\ninputImage2=inputImage2;\r\n\r\n\r\n%executando fun\u00e7\u00e3o cesus\r\n%running cesus function\r\n[nr,nc] = size(inputImage2);\r\n\r\nbits=uint32(0);\r\n      \r\nres2=uint32(zeros(nr,nc));\r\n\r\n\r\n\r\n%creatingo histogram\r\nC= (windowSize-1)\/2;\r\nfor(j=C+1:1:nc-C) \r\n\tfor(i=C+1:1:nr-C) \r\n\tcensus2 = 0; \r\n\t\tfor (a=-C:1:C) \r\n\t\t\tfor (b=-C:1:C) \r\n\t\t\t\tif (~(a==0 &#038;&#038; b==0)) \r\n\t\t\t\tcensus2=bitshift(census2,1); \r\n\t\t\t\t\tif (inputImage2(i+a,j+b) < inputImage2(i,j))\r\n\t\t\t\t\tcensus2=census2+1;\r\n\t\t\t\t\tend\r\n\t\t\t\tend\r\n\t\t\tend\r\n\t\tend\r\n\t\t%res = histogram\r\n\tres2(i,j) = census2;\r\n\tend\r\nend\r\n\r\n\r\n\r\n%pega parametros do fuzy para criar histograma\r\n%get parameters of fuzy to create histogram\r\nlarg = size(res2,2) ;\r\nalt  = size(res2,1) ;\r\nminimo = min(min(res2)) ;\r\nmaximo = max(max(res2)) ;\r\nimg_contraste2 = 255 * ( double(res2 - minimo) \/ double(maximo - minimo) );\r\n\r\nhistograma2 = zeros(1,256) ;\r\n\r\n%criando histograma\r\n%creating histegram\r\nfor i = 1 : alt\r\n    for j = 1 : larg\r\n        histograma2(floor(img_contraste2(i,j)+1)) = histograma2(floor(img_contraste2(i,j)+1)) + 1 ;\r\n    end\r\nend\r\n\r\n\r\n\t%calculando chi-quadrado\r\n\t%calculating chi-square\r\n\treschi = sum((histograma - histograma2).^2);\r\n\r\n\t%vetor para resultados do chi\r\n\t% Vector for results of chi\r\n\tforResult(ii) = reschi;\r\n\t\r\n\t%procura menor resultado do chi\r\n\t%search menor result of chi\r\n\tif ( reschi < resultchi )\r\n\tresultchi = reschi;\r\n\treshistograma = histograma2;\r\n\tresresultado = res2;\r\n\tresimage = inputImage2;\r\n\tend \r\n\r\n\t\r\n\r\n\tsubplot(2,3,4); plot(1:256,histograma2,'-b');\r\n\ttitle('Histograma');\r\n\tsubplot(2,3,5); imshow(res2,[0 128]);\r\n\ttitle('Trnas Census');\r\n\tsubplot(2,3,6); imshow(inputImage2);\r\n\ttitle('Imagem Original');\r\n\tdrawnow \r\n\r\n\tend\r\nend\r\n\t%mostra resultado\r\n\t%show result\r\n\tsubplot(2,3,4); plot(1:256,reshistograma,'-b');\r\n\ttitle('RESULTADO');\r\n\tsubplot(2,3,5); imshow(resresultado,[0 128]);\r\n\ttitle('RESULTADO');\r\n\tsubplot(2,3,6); imshow(resimage);\r\n\ttitle('RESULTADO');\r\n\tdrawnow \r\n\r\n\r\n\r\n%mostra tempo de procesamento\r\n%show processing time\r\ntime=toc;\r\ntime\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_toolbar\" href=\"https:\/\/www.hupso.com\/share\/\"><img src=\"http:\/\/static.hupso.com\/share\/buttons\/dot.png\" style=\"border:0px; padding-top: 5px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_t=new Array(\"Twitter\",\"Facebook\",\"Google Plus\",\"Linkedin\",\"Email\");var hupso_background_t=\"#EAF4FF\";var hupso_border_t=\"#66CCFF\";var hupso_toolbar_size_t=\"medium\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"jorgeltaioque\";var hupso_url_t=\"\";var hupso_title_t=\"Script%20-%20Matlab%20usando%20Census%20e%20Chi-quadrado%2C%20para%20reconhecimento%20facial\";<\/script><script type=\"text\/javascript\" src=\"http:\/\/static.hupso.com\/share\/js\/share_toolbar.js\"><\/script><!-- Hupso Share Buttons --><\/div><p>%limpando variaveis e terminal. %cleaning the variables and terminal clear all; close all; clc; %inicia contador de tempo %start counter of time tic; %procura imagem inicial %Search initial image imagefiles = dir(&#8216;*.pgm&#8217;); nfiles = length(imagefiles); forResult = zeros(1,nfiles); y = &hellip; <a href=\"http:\/\/www.networktips.com.br\/?p=573\">Continue lendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"http:\/\/www.networktips.com.br\/index.php?rest_route=\/wp\/v2\/posts\/573"}],"collection":[{"href":"http:\/\/www.networktips.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.networktips.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.networktips.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.networktips.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=573"}],"version-history":[{"count":3,"href":"http:\/\/www.networktips.com.br\/index.php?rest_route=\/wp\/v2\/posts\/573\/revisions"}],"predecessor-version":[{"id":583,"href":"http:\/\/www.networktips.com.br\/index.php?rest_route=\/wp\/v2\/posts\/573\/revisions\/583"}],"wp:attachment":[{"href":"http:\/\/www.networktips.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.networktips.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=573"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.networktips.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}