关于CLAHE插值算法的问题(问答区将悬赏)

LaoYuanPython
2020年博客之星Top3
博客专家认证
2021-12-03 17:38:24

在研究CLAHE算法时,本人直接阅读的源代码,但没有机器来构建C++环境来测试,因此有2个问题请教:

在《OpenCV自适应直方图均衡CLAHE C++源代码分享https://blog.csdn.net/LaoYuanPython/article/details/121507082中,关于插值的代码(上述博文的源代码的第240、256行的代码:

int lut_step = static_cast<int>(lut_.step / sizeof(T));

ind1_p[x] = tx1 * lut_step;

中的lut_step对于T取值为uchar时该值是否为256?上述代码中的lut是存储的总分块数为行数、T取值为uchar时256为列数的一个直方图矩阵。

最重要的问题是源代码的第302-310行:

                 int srcVal = srcRow[x] >> shift;
 
                int ind1 = ind1_p[x] + srcVal;
                int ind2 = ind2_p[x] + srcVal;
 
                float res = (lutPlane1[ind1] * xa1_p[x] + lutPlane1[ind2] * xa_p[x]) * ya1 +
                            (lutPlane2[ind1] * xa1_p[x] + lutPlane2[ind2] * xa_p[x]) * ya;
 ​​​​​​

计算出来的ind1和ind2应该会超过255,这样会导致数组访问越界。哪位能帮忙指点一下?上述lutPlane1、lutPlane2指向计算点所在块的前后直方图。

...全文
321 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
LaoYuanPython 2023-01-13
  • 打赏
  • 举报
回复

这个问题已经解决了。

CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-人工智能 发布问题, 以便更快地解决您的疑问

4,271

社区成员

发帖
与我相关
我的任务
社区描述
OpenCV相关技术交流专区
计算机视觉人工智能opencv 技术论坛(原bbs) 广东省·深圳市
社区管理员
  • OpenCV
  • 幻灰龙
  • OpenCV中国团队
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

OpenCV中国团队官方博客:https://blog.csdn.net/opencvchina

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