Image comparison - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Image comparison

Hi:
Anyone knows of any algorithm, library, C++ class or whatever I can use to do some bitmap comparison?
Thanx,
Aritosteles

Comments

  • XLoomXLoom Posts: 129Member
    Hi there
    Do you mean by bitmap comparison that you want to know how much one bitmap resembles the other in for example percentage? If so, then I hope this code helps a bit.

    This code would compare two currently 100x100 bitmaps and give you the percent of how similar they are. However, it isn't the same thing human brain performs... :)

    // definition of both bitmaps height and width
    #define BITMAPX 100
    #define BITMAPY 100

    // structure to contain data for one pixel
    typedef struct {
    float r,g,b; // color data varies for each color from 0-255
    }RGB; // they are floats just for convinience

    // two 100x100x24 bit bitmaps containing about to be compared images
    RGB bitmap1[100][100],bitmap2[100][100];

    // variables to hold number of pixels, current pixel and match so far
    // and match for current pixel
    float pixels=BITMAPX*BITMAPY,current_pixel=0;
    float match=0,currentmatch=0;

    // now we start looping through all pixels in our bitmaps comparing
    // according pixels to each other
    for(int posx=0;posx<BITMAPX;posx++){
    for(int posy=0;posy<BITMAPY;posy++){
    currentpixel++;

    // this is where actual comparison takes place
    // given that all three basic colors are on different axis
    // match between them can be calculated using
    // vector length equation
    currentmatch=sqrt(pow(bitmap1[posx][posy].r-bitmap2[posx][posy].r,2)+
    pow(bitmap1[posx][posy].g-bitmap2[posx][posy].g,2)+
    pow(bitmap1[posx][posy].b-bitmap2[posx][posy].b,2));

    match=((match*currentpixel)+currentmatch)/(currentpixel);
    }
    }

    match=100-match/2.56;

    Match should now be the similarity in percent between two bitmaps. If everything is correct, because I don't have time to test this code. And actually I doubt if this is the code you want. But maybe it is of some help.

    XLoom


Sign In or Register to comment.