MATLAB环境下基于同态滤波方法的医学图像增强

news/2024/7/21 6:38:57 标签: matlab, 算法, 计算机视觉, 图像处理, 信号处理

目前图像增强技术主要分为基于空间域和基于频率域两大方面,基于空间域图像增强的方法包括了直方图均衡化方法和 Retinex 方法等,基于频率域的方法包括同态滤波方法。其中直方图均衡化方法只是根据图像的灰度概率分布函数进行简单的全局拉伸,没有考虑像素间的灰度联系情况,进行直方图均衡化后,会在一定程度上提高图像的对比度,但是图像的灰度级会进行合并进而减少,造成细节的丢失。而 Retinex 方法假定空间照度是缓慢变化的,在图像明暗变化剧烈的区域,容易出现光晕现象。因此在处理光照差异很明显的图片,基于频率域的同态滤波方法有更好的效果。

同态滤波是一种结合了频率过滤和灰度变换的方法,它以图像的照度反射模型作为频域的处理基础,分别对低频信息进行增强,高频信息进行抑制,可以有效解决图像上照度不均匀和动态范围过大对图像产生影响的问题,在不损失亮区细节信息的同时,有效增强暗区的细节信息。

程序运行环境为MATLAB R2018A,使用同态滤波方法进行医学图像增强,算法可以参考:

[1]龚云,颉昕宇.基于同态滤波方法的煤矿井下图像增强技术研究[J].煤炭科学技术,2023,51(03):241-250.

[2]王娟,李军芳.一种基于同态滤波的水下目标深度辨识方法[J].实验室研究与探索,2022,41(06):62-66+105.

部分程序如下:

clear all;
clc;
% 原始图像库路径
originImgPath = 'DRimgs/';
% 参考结果图像路径
referenceImgPath = 'RefImgs/';
% 遍历所有jpg格式文件
imgDir  = dir([originImgPath '*.tif']);
% 遍历结构体就可以一一处理图片了

% 选取本次运行要查看的图片数
number=7;    
% number=length(imgDir); % 查看全部图像

for i = 1:number
    % 提取每张图片文件名
    name = imgDir(i).name((1:end-4)); 
    originImg = imread([originImgPath name '.tif']);           %读取原始图片
    referenceImg = imread([referenceImgPath name '_out.tif']); %读取参考结果图片
    
    %显示原始图像
    figure('name',name),subplot(1,3,1),imshow(originImg,[0 4096]);title('原始图片');
    %显示参考图像
    subplot(1,3,2),imshow(referenceImg,[0 4096]);title('参考结果图像');
% 方法一:使用同态滤波增强
%方法二:直方图均衡化,就是不会压缩原始图像
    %保存实验结果图
    resultPath = 'ResImgs/';
    resultImgName=[name,'_result_4096.tif'];
    saveImg(resultImg,resultPath,resultImgName);

    %显示结果图像
    subplot(1,3,3),imshow(resultImg,[]);title('同态滤波增强');
end

出图如下:

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任
《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。

擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。


http://www.niftyadmin.cn/n/5369953.html

相关文章

Elasticsearch: 非结构化的数据搜索

很多大数据组件在快速原型时期都是Java实现,后来因为GC不可控、内存或者向量化等等各种各样的问题换到了C,比如zookeeper->nuraft(https://www.yuque.com/treblez/qksu6c/hu1fuu71hgwanq8o?singleDoc# 《olap/clickhouse keeper 一致性协调服务》)&a…

【C++】C++的简要介绍

简单不先于复杂,而是在复杂之后。 文章目录 1. 什么是C2. C的发展史3. C的重要性3.1 语言的使用广泛度3.2 在工作领域3.3 在校招领域3.3.1 岗位需求3.3.2 笔试题 3.3.3 面试题 4. 如何学习C4.1 别人怎么学? 1. 什么是C C语言是结构化和模块化的语言&…

原始数据经过卷积层conv,批归一化层BatchNorm1d,最大池化层MaxPool1d,后数据的形状会发生什么样的改变?

这里写目录标题 1. 我的模型结构是这样的:2. 每一层数据形状的变化:3. 修改意见 1. 我的模型结构是这样的: self.model1 nn.Sequential(nn.Conv1d(1, 8, 1), nn.BatchNorm1d(8), nn.ReLU(), nn.MaxPool1d(2), nn.Conv1d(8, 32, 1), nn…

【C++基础入门】七、指针(定义和使用、所占内存空间、空指针和野指针、const关键字修饰指针、指针和数组、指针和函数)

七、指针 7.1 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址 7.2 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名; 示例&…

【FPGA Verilog】各种加法器Verilog

1bit半加器adder设计实例 module adder(cout,sum,a,b); output cout; output sum; input a,b; wire cout,sum; assign {cout,sum}ab; endmodule 解释说明 (1)assign {cout,sum}ab 是连续性赋值 对于线网wire进行赋值,必须以assign或者dea…

力扣102. 二叉树的层序遍历 (复习vector和queue的常见用法

目录 题目描述 题目解析 题目答案 题目所用知识点 最后 题目描述 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。力扣(LeetCode)官网 - 全球极客挚爱的技术…

图片视频上传压缩的考察

本文仅做上传 / 纯客户端压缩功能的调研 上传 能否在上传时就限制图片的张数?移动端不能使图库变成禁止状态,用户点击完成之后才能进行校验。 能否限制上传的文件格式?可以限制,PC端能够完美限制,移动端只能部分限制…

敏捷开发和传统开发的区别及工具分享

敏捷开发和传统开发的区别主要体现在以下几个方面: 团队建设不同:敏捷开发以团队为单位,强调团队建设,赋予高度的责任,支持开发、透明的交流环境;传统开发以个人为单位,团队成员之间交付很少。…