MFC 中关于边缘检测,该如何解决

MFC 中关于边缘检测
请高手们帮忙啊!!

小弟正在用MFC编一个图像处理的程序,然后第一个遇到的困难就是 图像需要边缘检测,然后我自己写了一个程序,但是始终达不到预期的效果,下面就是边缘检测的部分代码,请高手指教。
 下面代码的大体意思就是,我把像素存到了 cImage 二维数组里面,然后找像素为0的点,然后判断这个点的周围8个点,然后如果符合条件的,就把那个点赋为 255.当然中间还用了一个临时的二维数组 bImage .希望那位高手指教一下我下面代码,或者是能提供别的MFC代码就更好了,小弟在这儿不胜感激!
for(y=1; y< Height-1;y++)
{
for(x=1; x< Width-1;x++)
{
if(cImage[y][x] == 0)
{
bImage[y][x]=0;
n1 = cImage[y-1][x-1];
n2 = cImage[y-1][x];
n3 = cImage[y-1][x+1];
n4 = cImage[y][x-1];
n5 = cImage[y][x+1];
n6 = cImage[y+1][x-1];
n7 = cImage[y+1][x];
n8 = cImage[y+1][x+1];

if(n1+n2+n3+n4+n5+n7+n8 == 0)
{
bImage[y][x] = 255;

if(m_nBitCount == 16)
{
lIndex = ((Width * y) + x) * 2L;
*(_lpLastVHdr->lpData + lIndex) = bImage[y][x];
}
else if(m_nBitCount == 24)
{
lIndex = ((Width * y) + x) * 3L;
*(_lpLastVHdr->lpData + lIndex + 2) = bImage[y][x];
*(_lpLastVHdr->lpData + lIndex + 1) = bImage[y][x];
*(_lpLastVHdr->lpData + lIndex + 0) = bImage[y][x];
}
}
}
}
}
------解决方案--------------------
Cximage中有边缘检测,参考一下吧。
------解决方案--------------------
lz开始的时候二值化了没有???不二值化的话,你的这个程序会有问题。
关于边缘检测,我建议看一看Sobel一类的边缘检测算子
------解决方案--------------------
cximage或者opencv里都有现成的边缘检测函数
如opencv中的cvcanny,cvsobel等
http://blog.csdn.net/fengbingchun/article/details/5816253