全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

FPGA图像处理-CLAHE算法的第二步对比度限制(三)

时间:2024-01-05 13:44

人气:

作者:admin

标签:

导读:这个过程很简单,分为下面几个步骤。...

在这一篇里面介绍一下CLAHE算法的第二步对比度限制。

这个过程很简单,分为下面几个步骤。

计算出来限制的阈值

将统计好的直方图数据限制在0到阈值范围内。也就是将大于阈值的直方图数据减去阈值,并将差值累计起来。

将累计的差值平均分给每个灰度。

来看一下参考的Python代码:

def cl_hist(img, clip):
    h, w = img.shape
    n = np.zeros(256, np.uint32)
    for i in range(h):
        for j in range(w):
            n[img[i][j]] = n[img[i][j]] + 1


    t = 0
    for i in range(256):
        if n[i] > clip:
            t += n[i] - clip
            n[i] = clip
    t = t / 256
    n = n + t
    pk = n
    sk = np.zeros(256, np.float32)
    sk[0] = pk[0]
    for i in range(1, 256):
        sk[i] = sk[i - 1] + pk[i]
    sk = sk / (h * w)
    sk = sk * 255
    sk = np.around(sk)
    return sk

这个和之前的直方图统计就多了中间的步骤,也就是下面这一段代码:

    t = 0
    for i in range(256):
        if n[i] > clip:
            t += n[i] - clip
            n[i] = clip
    t = t / 256
    n = n + t

就是遍历256个灰度的统计值,将大于阈值的灰度统计值就设置为阈值,并将两者的差值进行累加。最后将总的差值除以256,将最后的结果累加到每一个灰度的统计值上面。

来看一下最后的效果:

87c54c5a-ab7f-11ee-8b88-92fbcf53809c.png

可以看到相对于没有进行限制对比度的效果要好很多。

下面这幅图是没有限制对比度阈值的结果:

87dda7a0-ab7f-11ee-8b88-92fbcf53809c.png

那么这个阈值要怎么计算呢:

一般来说我们采取这样的方法来计算阈值,也就是通过图像的大小,分块的多少,和clip_limit 的值来计算出来。一般图像大小,和分块多少是不变的,也就是说可以通过clip_limit的值来调整效果。

h, w = img.shape
block = 8
clip_limit = 2
clip = clip_limit * (h * w / (block * block) / 256)
clip = round(clip)

最后来看一下Verilog的实现,可以通过下面的代码来实现对比度限制的功能。

882f0d98-ab7f-11ee-8b88-92fbcf53809c.png






审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信