#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <stdarg.h>
#include <time.h>
#include "include/cv.h"
#include "include/highgui.h"
#pragma comment(lib,"lib/cxcore.lib")
#pragma comment(lib,"lib/cv.lib")
#pragma comment(lib,"lib/highgui.lib")
#include <iostream>
using namespace std;
//#include "windows.h"
int main()
{
IplImage* bone_scan = cvLoadImage("bone-scan.jpg",0);
cvNamedWindow("a",1);
cvShowImage("a",bone_scan);
//i,j for circle
int i,j;
//maxb,minb: maximum and minimum value of picture b
float maxb=-1000.0,minb=10000.0;
CvMat* mat = cvCreateMat(bone_scan->height,bone_scan->width,CV_32FC1);
CvMat* mat1 = cvCreateMat(bone_scan->height,bone_scan->width,CV_32FC1);
cvScale(bone_scan,mat,1/255.0);
#define im(ROW,COL) ((float *)(mat->data.fl+mat->step/sizeof(float)*(ROW)))[(COL)]
#define im1(ROW,COL) ((float *)(mat1->data.fl+mat1->step/sizeof(float)*(ROW)))[(COL)]
//laplace
IplImage* bone_laplace = cvCreateImage(cvGetSize(bone_scan),bone_scan->depth,bone_scan->nChannels);
for (i=1;i<mat->rows-1;i++)
{
for (j=1;j<mat->cols-1;j++)
{
float fa=(-im(i-1,j-1)-im(i-1,j)-im(i-1,j+1)
-im(i,j-1)+8*im(i,j)-im(i,j+1)
-im(i+1,j-1)-im(i+1,j)-im(i+1,j+1));
im1(i,j)=fa;
if (maxb<=fa)
{
maxb=fa;
}
if (minb>=fa)
{
minb=fa;
}
}
}
cvScale(mat1,bone_laplace,255);