opencv 图像增强Retinex 不会写调用

Vicky_猫 2012-05-30 01:28:36
急用opencv的图像增强处理Retinex 但我不会调用 求大牛帮忙!

void MultiScaleRetinexCR(IplImage *img, int scales, double *weights, double *sigmas,
int gain, int offset, double restoration_factor, double color_gain)
{
int i;
double weight;
IplImage *A, *B, *C, *fA, *fB, *fC, *fsA, *fsB, *fsC, *fsD, *fsE, *fsF;

// Initialize temp images
fA = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_32F, img->nChannels);
fB = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_32F, img->nChannels);
fC = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_32F, img->nChannels);
fsA = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_32F, 1);
fsB = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_32F, 1);
fsC = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_32F, 1);
fsD = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_32F, 1);
fsE = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_32F, 1);
fsF = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_32F, 1);

// Compute log image
cvConvert( img, fB );
cvLog( fB, fA );

// Normalize according to given weights
for (i = 0, weight = 0; i < scales; i++)
weight += weights[i];

if (weight != 1.0) cvScale( fA, fA, weight );

// Filter at each scale
for (i = 0; i < scales; i++) {
A = cvCloneImage( img );
FastFilter( A, sigmas[i] );

cvConvert( A, fB );
cvLog( fB, fC );
cvReleaseImage( &A );

// Compute weighted difference
cvScale( fC, fC, weights[i] );
cvSub( fA, fC, fA );
}

// Color restoration
if (img->nChannels > 1) {
A = cvCreateImage(cvSize(img->width, img->height), img->depth, 1);
B = cvCreateImage(cvSize(img->width, img->height), img->depth, 1);
C = cvCreateImage(cvSize(img->width, img->height), img->depth, 1);

// Divide image into channels, convert and store sum
cvCvtPixToPlane( img, A, B, C, NULL );

cvConvert( A, fsA );
cvConvert( B, fsB );
cvConvert( C, fsC );

cvReleaseImage( &A );
cvReleaseImage( &B );
cvReleaseImage( &C );

// Sum components
cvAdd( fsA, fsB, fsD );
cvAdd( fsD, fsC, fsD );

// Normalize weights
cvDiv( fsA, fsD, fsA, restoration_factor);
cvDiv( fsB, fsD, fsB, restoration_factor);
cvDiv( fsC, fsD, fsC, restoration_factor);

cvConvertScale( fsA, fsA, 1, 1 );
cvConvertScale( fsB, fsB, 1, 1 );
cvConvertScale( fsC, fsC, 1, 1 );

// Log weights
cvLog( fsA, fsA );
cvLog( fsB, fsB );
cvLog( fsC, fsC );

// Divide retinex image, weight accordingly and recombine
cvCvtPixToPlane( fA, fsD, fsE, fsF, NULL );

cvMul( fsD, fsA, fsD, color_gain);
cvMul( fsE, fsB, fsE, color_gain );
cvMul( fsF, fsC, fsF, color_gain );

cvCvtPlaneToPix( fsD, fsE, fsF, NULL, fA );
}

// Restore
cvConvertScale( fA, img, gain, offset);

// Release temp images
cvReleaseImage( &fA );
cvReleaseImage( &fB );
cvReleaseImage( &fC );
cvReleaseImage( &fsA );
cvReleaseImage( &fsB );
cvReleaseImage( &fsC );
cvReleaseImage( &fsD );
cvReleaseImage( &fsE );
cvReleaseImage( &fsF );
}
...全文
791 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishzmm 2014-10-31
  • 打赏
  • 举报
回复
楼主 同样遇到不会调用,不知道函数的参数取值,能告知?
fishzmm 2014-10-30
  • 打赏
  • 举报
回复
引用 3 楼 chaoking888 的回复:
我刚调好一个SSR的程序,要么?
能不能发一份retinex的程序给我?谢谢,398930453@qq.com
tilamisukaqibunuo 2014-04-18
  • 打赏
  • 举报
回复
引用 3 楼 chaoking888 的回复:
我刚调好一个SSR的程序,要么?
发给我一份SSR咯。谢谢啦! 185847466@qq.com
zhangqj622 2014-03-05
  • 打赏
  • 举报
回复
引用 3 楼 chaoking888 的回复:
我刚调好一个SSR的程序,要么?
给我一份SSR好么?谢谢305479421@qq.com
gd_wyf 2013-12-11
  • 打赏
  • 举报
回复
您好! 调好的SSR能发我一份么? 谢谢!775972542@qq.com
tranhongcam 2013-11-24
  • 打赏
  • 举报
回复
兄弟你好,您调好的SSR也能发我一份吗? bruce_tran_single@qq.com. 多谢!
tsjishan198923 2013-04-02
  • 打赏
  • 举报
回复
引用 3 楼 chaoking888 的回复:
我刚调好一个SSR的程序,要么?
你好,您调好的SSR能发我一份吗? 867090291@qq.com. 多谢!
浸在咫尺 2013-03-31
  • 打赏
  • 举报
回复
我刚调好一个SSR的程序,要么?
dianwei_wang 2012-12-18
  • 打赏
  • 举报
回复
如果是程序运行错误,那就把代码贴上来,大家帮你调试修改,很快的。
张欣-男 2012-12-15
  • 打赏
  • 举报
回复
你把全部的代码发给我,我告诉 你,我也成研究呢。

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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