#include "stdafx.h"
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
#define NUM_N 262144
#define NUM_T 49152
#define PATCH_SIZE 8
IplImage* open_image (int image_id, int flg){
char fname[256];
if(flg == 1) {
sprintf (fname, "C:/Users/Panna/Documents/MATLAB/cs186/gauss/gaussT/imT%d.bmp", image_id);
}
if(flg == 2) {
sprintf (fname, "C:/Users/Panna/Documents/MATLAB/cs186/gauss/gaussN/imN%d.bmp", image_id);
}
return cvLoadImage(fname);
}
/*IplImage* get_patch(IplImage* I,int p_num) {
IplImage* mypatch = cvCreateImage(cvSize(PATCH_SIZE,PATCH_SIZE),IPL_DEPTH_8U,1);//0;
CvScalar s;
int row = (int)(p_num / 128);
int col = (int)(p_num % 128);
for(int i=0;i<PATCH_SIZE;i++) {
for(int j=0;j<PATCH_SIZE;j++) {
s = cvGet2D(I,PATCH_SIZE*row+i,PATCH_SIZE*col+j);
cvSet2D(mypatch,i,j,s);
}
}
return mypatch;
}
int get_cumsum(IplImage* Tpatch,IplImage* Npatch) {
int cumsum = 0;
CvScalar Tpix; CvScalar Npix;
for(int i=0; i<8; i++){
for(int j=0; j<8; j++){
Tpix = cvGet2D(Tpatch,i,j);
Npix = cvGet2D(Npatch,i,j);
cumsum += (Tpix.val[0]-Npix.val[0])*(Tpix.val[0]-Npix.val[0]);
}
}
return cumsum;
}
*/
int main(void) {
//cvNamedWindow("t1",CV_WINDOW_AUTOSIZE);
int num_patches = (int)(1024*1024/(PATCH_SIZE*PATCH_SIZE));
IplImage* T;
IplImage* N;
IplImage* curTpatch = cvCreateImage(cvSize(PATCH_SIZE,PATCH_SIZE),IPL_DEPTH_8U,1);
IplImage* curNpatch = cvCreateImage(cvSize(PATCH_SIZE,PATCH_SIZE),IPL_DEPTH_8U,1);
CvScalar s; CvScalar Tpix; CvScalar Npix;
int p_num; int row; int col; int cumsum;
FILE *myfile = fopen("test.txt","w");
for(int tcnt=1;tcnt<2;tcnt++){
T = open_image((int)(tcnt / num_patches)+1,1);
p_num = (int)(tcnt % num_patches);
row = (int)(p_num / 128);
col = (int)(p_num % 128);
for(int i=0;i<PATCH_SIZE;i++) {
for(int j=0;j<PATCH_SIZE;j++) {
s = cvGet2D(T,PATCH_SIZE*row+i,PATCH_SIZE*col+j);
cvSet2D(curTpatch,i,j,s);
}
}
//curTpatch = get_patch(T,(int)(tcnt % num_patches));
for(int ncnt=1;ncnt<2;ncnt++){
N = open_image((int)(ncnt / num_patches)+1,2);
p_num = (int)(ncnt % num_patches);
row = (int)(p_num / 128);
col = (int)(p_num % 128);
for(int i=0;i<PATCH_SIZE;i++) {
for(int j=0;j<PATCH_SIZE;j++) {
s = cvGet2D(N,PATCH_SIZE*row+i,PATCH_SIZE*col+j);
cvSet2D(curNpatch,i,j,s);
}
}
//curNpatch = get_patch(N,(int)ncnt % num_patches);
cumsum = 0;
for(int i=0; i<8; i++){
for(int j=0; j<8; j++){
Tpix = cvGet2D(curTpatch,i,j);
Npix = cvGet2D(curNpatch,i,j);
cumsum += (Tpix.val[0]-Npix.val[0])*(Tpix.val[0]-Npix.val[0]);
}
}
//cum_sum = get_cumsum(curTpatch,curNpatch);
//printf("the cum_sum is: %d",cum_sum);
fprintf(myfile, "%d ", cumsum);
if(ncnt % 50 == 0)
printf("ncnt: %d\n",ncnt);
}
printf("tcnt: %d\n",tcnt);
fprintf(myfile,"\n"); //newline.
}
//write cumsum to a file..
/*FILE *myfile = fopen("test.txt", "w");
for(int row=0;row<NUM_T;row++)
{
for(int col=0;col<NUM_N;col++)
{
fprintf (myfile, "%d ", cum_sum[row][col]);
}
fprintf (myfile, "\n"); // newline
}*/
//cvShowImage("t1",T);
cvReleaseImage(&T); cvReleaseImage(&N); cvReleaseImage(&curTpatch); cvReleaseImage(&curNpatch);
system("PAUSE");
/*while(1)
{
int key_pressed;
key_pressed = cvWaitKey(0);
if(key_pressed == 27) {
// release the image
cvReleaseImage(&T);
return 0;
}
}*/
}
/* for(int ncnt=1;ncnt<NUM_N+1;ncnt++) {
cumsum[tcnt-1][ncnt-1]=0;
printf("cumsum:%d\n",cumsum[tcnt-1][ncnt-1]);
N = open_image(ncnt,2);
for(int i=0; i<PATCH_SIZE; i++){
for(int j=0; j<PATCH_SIZE; j++){
Tpix = cvGet2D(T,i,j);
Npix = cvGet2D(N,i,j);
cumsum[tcnt-1][ncnt-1] += (Tpix.val[0]-Npix.val[0])*(Tpix.val[0]-Npix.val[0]);
}
}
printf("cumsum:%d\n",cumsum[tcnt-1][ncnt-1]);
}
}*/