• Home
  • Despre MMDB
  • Articole
    • Algoritmi prelucrare imagini
    • Algoritmi extragere caracteristici imagini
      • Caracteristici globale
      • Caracteristicile matricii de co-ocurenta
      • Caracteristici color
      • Filtre Gabor
    • Metode de indexare imagini in baze de date
    • Algortmi de cautare in baze de imagini
  • Cod JAVA
    • Algoritmi prelucrare imagini
    • Algoritmi extragere caracteristici imagini
      • Caracteristici globale
      • Caracteristicile matricii de co-ocurenta
      • Caracteristici color
    • Metode de indexare imagini in baze de date
    • Algortmi de cautare in baze de imagini
  • Baze de date de imagini
    • Grayscale Images Databases
    • Color/Hyperspectral Images
    • Biomedical Images
    • 3D Scanning
    • Biometric Images
  • Solutii implementate
  • Contact

Metode de acces la informatie în bazele de date pentru prelucrari grafice

Categorie: Metode de indexare imagini in baze de date Publicat: 01 Septembrie 2015
Scris de Alex Accesări: 898
  • Tipărire
  • Email

Deoarece atunci când calculăm descriptorii Fourier, considerăm valoarea absolută a coeficienţilor transformatei Fourier discrete, alegerea punctului de început nu va afecta valorea lor.

Reamintim că descriptorii Fourier reprezintă forma obiectelor în domeniul frecvenţelor, iar numărul coeficienţilor generaţi de transformată este de obicei mare. Dar numai descriptorii de frecvenţe joase conţin informaţie despre caracteristicile generale ale formei, în timp ce descriptorii de frecvenţe înalte conţin informaţie despre detaliile fine ale formei. De aceea, vectorul caracteristic pentru formă va fi compus, în final, dintr-un număr mic de descriptori Fourier de frecvenţă joasă (am ales 20), aflaţi la începutul şi la sfârşitul secvenţei de descriptori Ck, k=0, …, N-3.

 

% preprocesarea imaginii: binarizarea si reducerea zgomotului

function bw2=prel_imag(rgbImage,level,d)

bw = im2bw(rgbImage,level);

se = strel('square', d);

bw2 = imdilate(bw,se);

 

 

% algoritmul “8-connectivity contour tracing” pentru extragerea % granitei formei obiectului din imagine

function [boundary,nparts]=mvbound(inputimage,neighborhood)

ni=nargin;

no=nargout;

error(nargchk(1,2,ni));

if 2==ni

      if ((4~=neighborhood) & (8~=neighborhood))

            error('eroare , trebuie 4 sau 8');

      end

else

     neighborhood=8;

end

if 8==neighborhood

    direction=[[0 1];[-1 1];[-1 0];[-1 -1];[0 -1];[1 -1];

               [1 0];[1 1] ];

    skip=2;

else direction=[ [0 1]; [-1 0]; [0 -1]; [1 0] ];

    skip=1;

end

[labeled,nparts]=bwlabel(inputimage,neighborhood);

[x y]=size(labeled);

for i=1 : nparts

    image=zeros(x+2,y+2);

    image(2:x+1,2:y+1)=(i==labeled);

    index=find(image);

    if ~isempty(index)

        n=1;

        d=neighborhood-1;

        [a b]=ind2sub(size(image),index(1));

        P(n)=a+b*sqrt(-1);

        notisolated=(1~=1);

        for j=1 : neighborhood

            next=[a b]+direction(j,:);

            if (1==image(next(1),next(2)))

                notisolated=(1==1);

                break;

            end

        end

        while notisolated

            d=mod(d+neighborhood-skip,neighborhood);

            for j=1 : neighborhood

                next=[a b]+direction(d+1,:);

                if (1==image(next(1),next(2)))

                   a=next(1);

                   b=next(2);

                   n=n+1;

                   P(n)=a+b*sqrt(-1);                  

                   break;

               end

               d=mod(d+1,neighborhood);

         end

         if (n>2) & (P(n)==P(2)) & (P(n-1)==P(1))

             n=n-2;

             break;

         end

    end

    boundary{i}=P(1:n)-1-sqrt(-1);   

end

end

 

 

% calcularea coeficientilor Fourier

function [S,F]=mvfdesc(R,no_desc,fs)

ni=nargin;

no=nargout;

error(nargchk(1,3,ni));

if 1==nargin

    no_desc=-1;

    fs=2;

elseif 2==nargin

    fs=2;

end

 

N=length(R);

for i=1 : N

    n=length(R{i});

    if n<3

        error('minim 3 puncte pe granita');

    end

    if no_desc>=n-2

        no_desc=n-2;

    end

end

for i=1 : N

    n=length(R{i});

    S{i}=abs(fft(R{i}))/n;

    if n>2

        if no_desc <= 0

            F{i}=[0:n-1]/n*fs;

            xos='Frecventa normalizata ';

            yos='Amplitudinea';

        elseif no_desc >= n-2

            S{i}=S{i}(3:length(S{i}))/S{i}(2);

            F{i}=F{i}(3:length(F{i}));

            xos='Index descriptori';

            yos='Amplitudinea';

       

        else

            S{i}=S{i}(3:length(S{i}))/S{i}(2);

            k=ceil(no_desc/2);

            l=floor(no_desc/2);

            m=length(S{i});

            S{i}=[S{i}(1:k),S{i}(m-1:m)];

            F{i}=[1:length(S{i})];

            xos='Index descriptori';

            yos='Amplitudinea';

        end

    end

end

color=['k' 'b' 'y' 'r' 'g' 'm' 'w' 'c'];

if nargout==0

    clf;

    hold on;

    j=0;      

 

    for i=1 : N

       S{i}

       stem(F{i},S{i},color(j+1));

       j=mod(j+1,length(color));

    end 

xlabel(xos);ylabel(yos);

end

      

 

% formarea vectorului caracteristic de forma

function T=pattern_vector(rgbImage,prag,d,nd)

I=prel_imag(rgbImage,prag,d);

[b,n]=mvbound(I);

S=mvfdesc(b,nd);

N=length(b);

k=length(S{1});

T=zeros(1,k);

for j=1 : k         

      for i=1:N,

          T(j)=T(j)+S{i}(j);

       end

end

for j=1 : k

    T(j)=T(j)/N;

 

end

  • Contact
  • Termeni si conditii
Copyright © MMDB - Multimedia DataBase 2025 All rights reserved. Custom Design by Youjoomla.com
Metode de indexare imagini in baze de date