Youg 0

Hi,

working on a piece of code which loads in two images, one is a scrambled version of the other, compares them and then attempts to make a new image from the scrambled version. So far I've got it making a new image, comparing and unscrambling most of it, just missing a few squares and I can't figure out why. I've included the main code that's doing all the working out below and help would be greatly appreciated!

``````int main()
{
int M=512; int N=512;

string userinput = "";

binary_matrix original_logo(M, N, readTXT("..\\..\\DataFile\\logo_bi.txt", M, N));
binary_matrix shuffled_logo(M, N, readTXT("..\\..\\DataFile\\logo_shuf.txt", M, N));
binary_matrix unshuffled_logo(M,N);

matrix score = matrix(16,16);

matrix secondscore = matrix(16,16);

int icount = 0;
int jcount = 0;

for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
unshuffled_logo(i,j) = 0;
}

}

for (int shuffledmatrixY = 0; shuffledmatrixY < M; shuffledmatrixY += 32)
{
for (int shuffledmatrixX = 0; shuffledmatrixX < M; shuffledmatrixX += 32)
{

binary_matrix currentShuffledChunk(32,32);

for (int i = 0; i < 32; i++)
{
for (int j = 0; j < 32; j++)
{
currentShuffledChunk(i,j) = shuffled_logo(i+shuffledmatrixY,j+shuffledmatrixX);
}
}

//cout << endl << "Shuffled Matrix Created at (" << shuffledmatrixY << "," << shuffledmatrixX << ")" << endl;

for (int originalmatrixY = 0; originalmatrixY < M; originalmatrixY += 32)
{
for (int originalmatrixX  = 0; originalmatrixX  < N; originalmatrixX += 32)
{

binary_matrix currentOriginalChunk(32,32);

for (int i = 0; i < 32; i++)
{
for (int j = 0; j < 32; j++)
{
currentOriginalChunk(i,j) = original_logo(i+originalmatrixY,j+originalmatrixX);
}
}

matrix temp = currentShuffledChunk - currentOriginalChunk;
temp.squared();

double sum =  temp.v_sum();

score(icount,jcount) = sum;

matrix othertemp = currentShuffledChunk * currentOriginalChunk;

sum = othertemp.v_sum();

secondscore(icount,jcount) = sum;

//cout << "Tested (" << icount << "," << jcount << ") = " << score(icount,jcount) << endl;

jcount++;

}

icount ++;
jcount = 0;

}

icount = 0;

//for (int i = 0; i < N/32; i++)
//{
//  for (int j = 0; j < M/32; j++)
//  {
//      if ((secondscore(i,j) >= secondscore.v_max()) & (secondscore(i,j) != 0))
//      {
//          cout << secondscore(i,j) << " ";
//              for (int y = 0; y < 32; y++)
//              {
//                  for (int x = 0; x < 32; x++)
//                  {
//                      unshuffled_logo(x+(i*32),y + (j*32)) = currentShuffledChunk(x,y);

//                  }

//              }
//              break;

//      }
//  }
//}

for (int i = 0; i < N/32; i++)
{
for (int j = 0; j < M/32; j++)
{
if (score(i,j) <= score.v_min())
{
cout << score(i,j) << " ";
for (int y = 0; y < 32; y++)
{
for (int x = 0; x < 32; x++)
{
unshuffled_logo(x+(i*32),y + (j*32)) = currentShuffledChunk(x,y);

}

}
break;

}
}
}

}

}

WritePGM("..\\..\\DataFile\\Output.pgm",unshuffled_logo,M,N,1);
cout << "DONE.";
cin.get();

return 0;
}
``````
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.