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
    +关注

    关注

    1627

    文章

    21685

    浏览量

    602323
  • 图像处理
    +关注

    关注

    27

    文章

    1283

    浏览量

    56673
  • 算法
    +关注

    关注

    23

    文章

    4604

    浏览量

    92710

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    FPGA设计经验图像处理

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

    FPGA图像处理领域的优势有哪些?

    。这种并行处理能力使得FPGA处理大规模图像数据时表现出色,能够实时完成复杂的图像处理算法
    发表于 10-09 14:36

    FPGA图像与视频处理培训

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

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

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

    一种基于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 2次下载

    基于FPGA的红外图像处理系统及算法设计

    本文在研究红外焦平面阵列非均匀性的特点和成因后,首先设计了红外图像实时处理的硬件平台。本硬件平台以FPGA为核心处理器,外围芯片主要有存储器和D/A等。该平台为红外探测器提供驱动信号,
    发表于 05-17 14:29 5次下载

    如何使用FPGA实现图像的中值滤波算法

    图像滤波是图像处理过程中苇要的组成部分,而基于FPGA的滤波算法相对软件算法而言具有高度的并行
    发表于 04-01 11:21 42次下载
    如何使用<b class='flag-5'>FPGA</b>实现<b class='flag-5'>图像</b>的中值滤波<b class='flag-5'>算法</b>

    FPGA学习-基于FPGA图像处理

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

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

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

    FPGA图像处理算法有哪些

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

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

    在介绍CLAHE算法之前必须要先提一下直方图均衡化,直方图均衡化算法是一种常见的图像增强算法,可以让像素的亮度分配的更加均匀从而获得一个比较
    的头像 发表于 01-02 13:32 1695次阅读
    <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>介绍(一)