0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA图像处理之CLAHE算法

FPGA开源工坊 来源:FPGA开源工坊 2024-01-04 12:23 次阅读

FPGA图像处理--CLAHE算法(一)中介绍了为啥要用CLAHE算法来做图像增强。

在这一篇里面就介绍一下CLAHE的第一步处理:分块。

通常来说会将图片分为8*8的64块,然后分别对这64块进行直方图均衡化。

如下所示(手画的不均匀)。分为8*8这也是对常见的视频分辨率可以被8整除,这样也不用考虑边界不均匀了。

因为我们要对这64块都做直方图均衡化,所以先定义一个直方图均衡化的计算函数。

def hist(img):
    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


    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

之后分块调用这个直方图均衡化的代码。

def calc_ahe(img, block):
    h, w = img.shape
    he = np.zeros((h, w), np.uint8)
    for i in range(block):
        for j in range(block):
            sk = hist(img[i * (h // block): (i + 1) * (h // block), j * (w // block):(j + 1) * (w // block)])
            he[i * (h // block): (i + 1) * (h // block), j * (w // block):(j + 1) * (w // block)] = remap(
                img[i * (h // block): (i + 1) * (h // block), j * (w // block):(j + 1) * (w // block)], sk)
    return he

得到的效果如下:

可以看到每一块都是被分割了出来。

在RTL实现的时候也是要对这些分块进行存储,定义下面的存储器:

genvar i;
generate
    for(i = 0; i < BLOCK_NUM_POW2; i = i + 1) begin : LOOP_MEM
        tpram #(
            .DP    (256),
            .WD    (16 )
        ) tpram_inst(
            .clk   (clk     ),
            .wdata (wdata[i]),
            .wen   (wen[i]  ),
            .waddr (waddr[i]),
            .ren   (ren[i]  ),
            .raddr (raddr[i]),
            .rdata (rdata[i])
        );
    end
endgenerate

a69db230-aab6-11ee-8b88-92fbcf53809c.png

也是考虑block_num来选择写入到哪一个ram里面。

通过i和j来控制最后的block_num,其中i表示列方向的分块索引,j表示行方向的分块索引,因为我们每一列都是分为了8块,所以i的索引需要乘以8,这个通过后面补3个0来实现。

a6b662d0-aab6-11ee-8b88-92fbcf53809c.png

最后通过一系列选择来控制RAM的读写信号

a6c5b2bc-aab6-11ee-8b88-92fbcf53809c.png

这样就能完成CLAHE中分块进行直方图均衡化的操作。这个主要难点是分块,直方图均衡化网上教程很多就不再赘述了。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21326

    浏览量

    593230
  • 图像处理
    +关注

    关注

    26

    文章

    1225

    浏览量

    55827
  • 算法
    +关注

    关注

    23

    文章

    4456

    浏览量

    90759

原文标题:FPGA图像处理--CLAHE算法(二)

文章出处:【微信号:FPGA开源工坊,微信公众号:FPGA开源工坊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA图像处理CLAHE算法的线性差值

    对于最后一种情况,也就是位于中间白色区域的点,他需要进行双线性插值。可以看到整个点位于第四个block,所以他需要在第一个,第二个,第四个和第五个block上分别计算直方图均衡化的结果,和相应的权重。
    发表于 01-21 10:51 542次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>图像</b><b class='flag-5'>处理</b>之<b class='flag-5'>CLAHE</b><b class='flag-5'>算法</b>的线性差值

    FPGA图像与视频处理培训

     FPGA图像与视频处理培训课程目标:  1、深入了解JPEG标准和H.264标准协议;  2、掌握FPGA图像
    发表于 07-16 14:05

    实时图像处理FPGA芯片怎么选择

    本人想做数字图像处理方面的课题,不知道DSP和FPGA的器件怎么选择,希望有经验的大神给点建议,我做的这个课题是用FPGA和DSP处理
    发表于 08-06 10:54

    基于FPGA的高速实时图像采集和自适应阈值算法

    基于FPGA的高速实时图像采集和自适应阈值算法提出了基于FPGA图像处理自适应阈值
    发表于 08-11 15:38

    FPGA图像处理初学者的迷茫

    哪位大神现在在从事基于FPGA图像处理的相关工作,我现在在学习,导师给选的方向,自己前一段时间用FPGA实现了中值滤波,sobel边缘检测,然后就是一些书本上面简单
    发表于 06-29 20:38

    一种基于FPGA的实时视频图像处理算法研究与实现

    摘要为有效提高视频监控应用领域中多屏幕画面显示的清晰度、分辨度等问题,提出了一种基于FPGA的实时视频图像处理算法。文中介绍了系统的整体结构,然后针对FPGA模块介绍了视频
    发表于 06-28 07:06

    荐读:FPGA设计经验图像处理

    今天和大侠简单聊一聊基于FPGA图像处理,之前也和各位大侠聊过相关的图像处理,这里面也超链接了几篇,具体如下:
    发表于 06-08 15:55

    基于DSP和FPGA的通用图像处理平台设计

    设计一种基于DSP和FPGA架构的通用图像处理平台,运用FPGA实现微处理器接口设计,并对图像
    发表于 12-25 17:06 61次下载

    ECT图像重建算法FPGA实现

    ECT图像重建算法FPGA实现 ECT图像重建算法FPGA实现
    发表于 11-19 14:59 1次下载

    如何使用FPGA实现一种图像处理结构及典型算法

    图像滤波和边缘检测等预处理算法是视觉导航系统中道路检测和车辆检测等复杂视觉处理的前提,其性能和处理时间直接影响了后续图像
    发表于 12-13 17:56 37次下载
    如何使用<b class='flag-5'>FPGA</b>实现一种<b class='flag-5'>图像</b>预<b class='flag-5'>处理</b>结构及典型<b class='flag-5'>算法</b>

    基于FPGA而实现的视频图像处理算法

    为有效提高视频监控应用领域中多屏幕画面显示的清晰度、分辨度等问题,提出了一种基于FPGA的实时视频图像处理算法
    发表于 09-13 14:53 3526次阅读

    FPGA学习-基于FPGA图像处理

    图像处理系统设计注意点: 1.将算法开发和 FPGA 实现分离 用软件的图像处理环境可以使用大批
    的头像 发表于 02-15 16:35 937次阅读

    基于FPGA图像处理之直方图均衡

    最近一直在用FPGA图像处理相关的算法,主要是集中在图像增强和增晰方面。
    发表于 06-29 09:23 705次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>图像</b><b class='flag-5'>处理</b>之直方图均衡

    FPGA图像处理算法有哪些

    早之前的朋友知道我发过一个用chatgpt分析出来的 FPGA图像处理的知识树,里面包含了从色域,镜头,接口和算法。然后我就发现这个算法部分
    的头像 发表于 09-12 09:59 610次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>图像</b><b class='flag-5'>处理算法</b>有哪些

    FPGA图像处理-CLAHE算法介绍(一)

    在介绍CLAHE算法之前必须要先提一下直方图均衡化,直方图均衡化算法是一种常见的图像增强算法,可以让像素的亮度分配的更加均匀从而获得一个比较
    的头像 发表于 01-02 13:32 992次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>图像</b><b class='flag-5'>处理</b>-<b class='flag-5'>CLAHE</b><b class='flag-5'>算法</b>介绍(一)