关于一个opencv的小程序 图像变形了。解决办法

关于一个opencv的小程序 图像变形了。。
#include <iostream>
#include <cv.h>
#include <highgui.h>

using namespace std;
int main(int argc,char *argv[])
{
IplImage *img1=0;//源图像
int height;
int width;
int step;
int channels;
uchar *data;
img1=cvLoadImage("hello.jpg",0);
if (!img1)
{
printf("could not load image file: %s\n","image.jpg");
exit(0);
}

height=img1->height;
width=img1->width;
step=img1->widthStep;
channels=img1->nChannels;
data=(uchar*)img1->imageData;


//创建窗口
cvNamedWindow("源图像",CV_WINDOW_AUTOSIZE);
cvMoveWindow("处理图像",100,100);//移动窗口,以屏幕左上角的起点的偏移量



IplImage *image2=cvCreateImage(cvSize(img1->width,img1->height),img1->depth,1);
uchar *p=(uchar *)image2->imageData;//获得新图像的内存数据块儿
int pixel[3];
BYTE* pTemp = NULL;
 for(int j=0;j<height-1;j++) 

for (int i=0;i<width-1;i++) 

pTemp = data+width*j+i;       //指向源图像的第j行,第i个像素的指针 
 pixel[0]=(unsigned char)*pTemp ; 
            pixel[1]=(unsigned char)*(pTemp + 1); 
            pixel[2]=(unsigned char)*(pTemp+width); 
            pixel[3]=(unsigned char)*(pTemp+width+1); 
//pixel[0]=(int)((uchar *)img1->imageData)[(i-1)*img1->widthStep+j-1];
//pixel[1]=(int)((uchar *)img1->imageData)[(i-1)*img1->widthStep+j];
//pixel[2]=(int)((uchar *)img1->imageData)[i*img1->widthStep+j-1];
//pixel[3]=(int)((uchar *)img1->imageData)[(i+1)*img1->widthStep+j+1];
 //计算目标图像中的当前点 
 p[j*img1->widthStep+i]=sqrt(double((pixel[0]- pixel[3])*(pixel[0]- pixel[3])+(pixel[1]-pixel[2])*(pixel[1]- pixel[2])));
}

cvShowImage("源图像",img1);
cvShowImage("处理图像",image2);
cvWaitKey(0);
cvReleaseImage(&img1);
cvReleaseImage(&image2);
}

是关于robert变换的,但是结果变形了都????
------最佳解决方案--------------------
pixel[1]=(unsigned char)*(pTemp + 1); 
            pixel[2]=(unsigned char)*(pTemp+width); 
            pixel[3]=(unsigned char)*(pTemp+width+1); 
//pixel[0]=(int)((uchar *)img1->imageData)[(i-1)*img1->widthStep+j-1];
//pixel[1]=(int)((uchar *)img1->imageData)[(i-1)*img1->widthStep+j];
//pixel[2]=(int)((uchar *)img1->imageData)[i*img1->widthStep+j-1];
//pixel[3]=(int)((uchar *)img1->imageData)[(i+1)*img1->widthStep+j+1];有问题