图像处理算法之二维Gamma校正matlab实现(实现fspecial、imfilter函数)

博客介绍了如何在matlab中实现二维Gamma校正,包括手动实现fspecial函数生成高斯卷积核和imfilter函数进行卷积运算。通过对比matlab原生函数与自实现函数的效果,验证了实现的正确性,适用于嵌入式设备的图像处理。
摘要由CSDN通过智能技术生成

目录

0 引言

1、思路

2、代码

2.1  fspecial函数实现代码

2.2  imfilter函数实现代码

2.3  二维Gamma校正实现代码

3、代码运行结果

3.1  fspecial函数实现效果

3.2  imfilter函数实现效果

3.3  二维Gamma校正实现效果

4、参考资料


0 引言

       最近项目中需要用到二维Gamma校正(基于二维伽马函数的光照不均匀图像自适应校正算法),且需要在嵌入式设备上运行,因此需要用C语言实现该功能。经过一番查找,仅找到基于OpenCV版和matlab版的该功能的实现,由于matlab使用更为方便,故决定采用matlab实现该功能,待在PC上完成测试后,再在matlab版本基础上改为C语言版。
       已有matlab版二维Gmama校正代码的实现主要利用了两个关键函数:fspecial函数生成高斯卷积核、imfilter函数对图片做卷积运算。考虑到嵌入式设备中并无相应函数库,故需要手动实现上述两个函数,实现如下。


1、思路

        (1)卷积核生成:根据输入卷积核尺寸(奇数)创建卷积核矩阵,随后确定矩阵中心点,将输入的标准差及各点相对中心点坐标(以中心点为原点建立直角坐标系)带入二维高斯函数可得该点值。

                                                        G(x,y)=\frac{1}{\lambda }*e^{-\frac{x^{2}+y^{2}}{2\sigma ^{2}}},\lambda =2\pi \sigma ^{2}

   值得注意的是:在上述步骤完成后还需要进行归一化,确保卷积核所有点的值和为1,具体步骤为:求得所有点值之和sum,各点值分别除以sum即可得最终卷积核。

   例:生成尺寸为3*3,标准差为2的卷积核

                                    

                    图2.1  未做归一化时的卷积核                      图2.2  归一化完成后的卷积核

        (2)卷积运算:对全图进行遍历,利用卷积核对各点进行卷积运算,当卷积核部分超出原始图片区域时,超出部分补为最近的图片边界值。

          注:matlab库中imfilter函数有三个重要参数,分别为填充选项、输出大小、相关性和卷积选项。其中,本文实现的imfilter函数的填充策略同原库函数中'replicate'选项。

        


2、代码


2.1  fspecial函数实现代码

%=======================================================
%fspecial函数实现(参数为'gaussian')
%作者:Usetc-Sl
%版本:v1.0
%创建日期:2021.04.28
%输入
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值