图像增强

本文介绍了将Python图像增强代码转写为MATLAB版本的过程,重点关注指纹图像处理。内容包括图像分割以区分前景和背景,利用Gabor滤波增强指纹特征,以及计算脊线方向。虽然Gabor滤波部分代码理解不透彻,但作者表示从中学到很多编程规范。GitHub链接提供了原始Python代码。
摘要由CSDN通过智能技术生成

这篇主要是记录GitHub上找到的一份python写的图像增强代码,主要针对指纹图像。这里将这份代码转写为matlab版本,不过还是有很多代码不太理解,因此主要放我转写的代码,附带很少的解释。通过这篇指纹图像增强的代码,让我学到了很多,这份python的代码非常棒,鲁棒性很强,让我也学到了非常多的编程规范。GitHub地址为https://github.com/Utkarsh-Deshmukh/Fingerprint-Enhancement-Python
这个代码是主函数,如果要进行指纹图像增强就直接调用这个函数即可。

function newimim=imageEnhancement(gray)
% %对图像进行增强处理
%----------------------------------------------------------------------
%输入:
% gray:        图像
%----------------------------------------------------------------------
%输出:
% newimim:          增强后的图像
%----------------------------------------------------------------------
gray=rgb2gray(gray);            %转灰度图像
[rows,cols] = size(gray);
aspect_ratio = double(rows)/double(cols);
new_rows = 350;             % 设置一个新行值,这个值可以设置的稍大一些,大一些增强效果会好很多
%只设置行值,列值根据图像的比值设置非常高明,不用该别图像的长宽比
new_cols = new_rows/aspect_ratio;   %依据原图比例得到新列值
gray=imresize(gray,[new_rows new_cols],'bilinear'); %改变图像大小
% figure();imshow(uint8(gray));

blksze = 16;            %将图像分成若干块,每块大小16*16
thresh = 0.2;           %固定阈值
[gray,Icc]=ridge_segment(gray,blksze,thresh);   %图像分割函数,得到归一化后的图,以及指纹前景区域

gradientsigma = 1;          %计算图像梯度的高斯导数
blocksigma = 5;               %对梯度矩阵求和的高斯加权值
orientsmoothsigma = 5;          %平滑最终方向向量场,可设为0
orientim = OrientationFilter(gray, gradientsigma, blocksigma, orientsmoothsigma); %计算指纹中脊线的局部方向

blksze = 40;                %图像块大小
windsze = 5;                %识别峰值的窗口长度,应该设为奇数
minWaveLength = 5;          %最小脊波长
maxWaveLength = 15;         %最大脊波长
[freq,meanfreq]=ridge_freq(gray, Icc, orientim, blksze, windsze,minWaveLength, maxWaveLength); %计算脊频率

freq = meanfreq*Icc;
kx = 0.65;ky = 0.65;           %% 比例因子,指定相对于滤波器波长的滤波器sigma,可从0.5开始
newim = ridge_filter(gray, orientim, freq, kx, ky);         %基于方向的Gabor滤波
newimim=newim < -2;             
se=zeros(3,3);
se(2,:)=1;
se(:,2)=1;
newimim=imclose(newimim,se);            %闭运算
end

图像分割,主要是为了确定前景和背景,避免背景对于指纹图像的干扰,有利于后面的识别。

function [normim,mask]= ridge_segment(im,blksze,thresh)
% %将图像归一化并分割图像
%----------------------------------------------------------------------
%输入:
% im:        待处理图像
% blksze:         块大小
% thresh:         阈值,决定前景还是背景
%----------------------------------------------------------------------
%输出:
% normim:           归一化后的图
% mask:           
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值