有关OpenCV的感兴趣区域提取

hikarutoto 2011-07-19 11:37:13
我用的是cvSetImageROI函数,希望实现的功能是:提取以(x,y)为中心的32*32的感兴趣区域内各像素值的均值和标准差,然后原像素点f(x,y)与均值/标准差*120做比较,高于阈值设值255,低于阈值设值0。也就是一个图像阈值二值化的过程。
代码如下:

// TODO: Add your command handler code here
int i,j,mod;
unsigned char* pixel;
unsigned char* pixel_out;
CvMat *pMat = cvCreateMatHeader(32, 32, CV_8UC1);
IplImage*src=workImg;
IplImage*image=cvCloneImage(src);
int h=src->height;
int w=src->width;
int *pix=new int[h*w];
int *pixout=new int[h*w];
//取出原图形各点像素值
for(i=0;i<h;i++)
{
for(j=0;j<w;j++)
{
pixel=(unsigned char*)(src->imageData+i*w+j);
pix[i*w+j]=*(pixel);
}
}

int col,ii,jj;
int count=0;

for(i=16;i<h-16;i++)
{
for(j=16;j<w-16;j++)
{
//提取感兴趣区域
cvGetSubRect(src,pMat,cvRect(i-16,j-16,32,32));
CvScalar mean,std_dev;
cvAvgSdv(pMat,&mean,&std_dev,NULL); //得到均值和标准差
double ss=mean.val[0]*120/std_dev.val[0];

if( pix[i*w+j] >ss)
{
pixout[i*w+j]=255;
}
else
{
pixout[i*w+j]=0;
}
}
}
//得到二值化输出图像
for(i=0;i<h;i++)
{
for(j=0;j<w;j++)
{
mod=pixout[i*w+j];
pixel_out=(unsigned char*)(image->imageData+i*w+j);
*(pixel_out)=(BYTE)mod;
}
}

cvNamedWindow("二值图像",CV_WINDOW_AUTOSIZE);
cvFlip(image);
cvShowImage("二值图像",image);
cvWaitKey(0);
cvDestroyAllWindows();
cvFlip(image);
m_dibFlag=imageReplace(image,&workImg);
Invalidate();



可是图像运行结果很奇怪,感觉中有中间一小部分有进行运算,上面下面有很大部分都是全黑的,而且有一块总是二值化的很奇怪,不知道什么原因,请高手赐教这样提取感兴趣区域有问题吗?非常感谢!!!!
...全文
770 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hikarutoto 2011-07-21
  • 打赏
  • 举报
回复
没有人知道么?
hikarutoto 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fengbingchun 的回复:]
用cvSetImageROI先把进行操作的部分图像提取出来,操作完后,再用cvSetImageROI将处理后的图像替换掉原先的部分
[/Quote]
另怎样用cvSetImageROI将处理后的图像替换掉原先的部分?

hikarutoto 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fengbingchun 的回复:]
用cvSetImageROI先把进行操作的部分图像提取出来,操作完后,再用cvSetImageROI将处理后的图像替换掉原先的部分
[/Quote]
用cvGetSubRect不行么?说错了,我之前用的是cvSetImageROI,之后改用cvGetSubRect了,效果都一样。
fengbingchun 2011-07-19
  • 打赏
  • 举报
回复
用cvSetImageROI先把进行操作的部分图像提取出来,操作完后,再用cvSetImageROI将处理后的图像替换掉原先的部分

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧