数字图像处理:实验六

news2025/1/27 17:33:04

       uu们!大家好,2025年的新年就要到来,咸鱼哥在这里祝大家在2025年每天开心快乐,天天挣大钱,自由自在,健健康康,万事如意!(要是咸鱼哥嘴笨的话,还望大家多多包涵!因为咸鱼哥不太机灵。。。没办法(单纯就是不太会表达自己的意思,所以过年不太讨喜emmm...))在本章,咸鱼哥主要是针对于锐化空间滤波的概念和方法来进行实验的操作和代码的讲解,uu们!我们开始本章实验吧!

一、基础知识

 1.拉普拉斯变换(算子):

   在数字图像处理中:

    (实际上这个算式很好理解,在3*3的蒙板中,我们的中心为(x,y),而算式中的前四个就是和(x,y)四邻接的四个方块的值,实际上就是十字上的处中心的值相加,然后再减去中心(x,y)的4倍值就可以计算出来了。

   注:这个蒙板只是一个例子,并不是规定中心一定为负数,还有以下的形式,包括中心点为正,还有和不为零等情况。

增强方法:

2、sobel变换(算子):

二、具体要求

       1、依据拉普拉斯算子,选用模板1~8对自选图(不能选图例1)进行锐化处理;依据Sobel算子选用模板9~10对自选图(不能选图例2)进行边缘检测。

        2、应用拉普拉斯算子时,每种模板的对应输出图包 含“原图”、“依据模板X(X代表模板数)滤波后”、“拉普拉斯锐化后”3个子图,因此对于拉普拉斯锐化有8 个输出图,一共24个子图,每个子图都要有上述对 应的3个子图名。 应用Soble算子时,为1张输出图,包含3个子图:“原图”、“行检测”、“列检测”。

三、应用编程

        输入透射CT(全身或局部)图像,设计一个算法流程, 进行层次化的图像增强,得到增强效果更好的结果图像。

要求如下:

      1. 使用高斯滤波进行预处理,减少noise;

      2. 使用拉普拉斯滤波进行细节增强;

      3. 使用Sobel 边缘检测增强边缘;

      4. 对比度受限的低对比度区域使用自适应直方图 均衡化提升对比度;

      5. 用中值滤波去除噪声点;

      6. 分析比较不同阶段的图像效果;

      7. 将上述所有滤波方法进行优化组合获得增强图。

四、编程

img = imread('1.png'); % 替换为你的图像路径 % 从指定路径读取图像文件
img_gray = rgb2gray(img); % 转换为灰度图像 % 将读取的彩色图像转换为灰度图像
 
A=-8; % 定义一个变量A,用于后续模板中的计算
 
% 拉普拉斯模板(示例,你可以根据需要定义其他模板)
laplacian_templates = { % 定义一个cell数组,存储不同的拉普拉斯模板
    [0  1  0; 1  -4  1; 0  1  0], % 模板1
    [1  1  1; 1  -8  1; 1  1  1], % 模板2
    [0 -1  0; -1  4 -1; 0  -1  0], % 模板3
    [-1 -1 -1;  -1  8  -1; -1  -1 -1], % 模板4
    % 增强模板5(负中心,增强边缘检测效果)
    [0  1  0;  1 (A-4)  1;  0  1  0], % 模板5,中心系数为A-4
    % 增强模板6(负中心,同样增强边缘检测效果)
    [1  1  1;  1 (A-8)  1;  1  1  1], % 模板6,中心系数为A-8
    % 增强模板7(正中心,用于强调中心像素)
    [0 -1  0; -1  (A+4) -1; 0 -1  0], % 模板7,中心系数为A+4
    % 增强模板8(正中心,增强中心像素的影响)
    [-1 -1 -1; -1  (A+8) -1; -1 -1 -1] % 模板8,中心系数为A+8
};
 
% 拉普拉斯算子处理并显示结果,每个模板一个窗口
for i = 1:length(laplacian_templates)
    figure; % 创建新窗口 % 为每个模板的处理结果创建一个新的显示窗口
    
    % 原图
    subplot(1, 3, 1); % 在1行3列的子图中占据第1个位置
    imshow(img_gray); % 显示灰度图像
    title(['原图 - 模板' num2str(i)]); % 设置标题,显示当前处理的模板编号
    
    % 依据模板滤波后
    filtered_img = imfilter(double(img_gray), laplacian_templates{i}, 'same', 'replicate'); % 使用拉普拉斯模板进行滤波
    subplot(1, 3, 2); % 在1行3列的子图中占据第2个位置
    imshow(filtered_img, []); % 显示滤波后的图像,使用空矩阵[]自动调整显示范围
    title(['依据模板' num2str(i) '滤波后']); % 设置标题
    
    % 拉普拉斯锐化后
    sharpened_img = double(img_gray) - filtered_img; % 通过原图减去滤波后的图像进行锐化
    sharpened_img = uint8(sharpened_img); % 将结果转换为uint8类型
    subplot(1, 3, 3); % 在1行3列的子图中占据第3个位置
    imshow(sharpened_img); % 显示锐化后的图像
    title(['拉普拉斯锐化后 - 模板' num2str(i)]); % 设置标题
end

结果:

        应用代码:

% Sobel算子
sobel_x = [-1 0 1; -2 0 2; -1 0 1]; % Sobel算子的x方向模板
sobel_y = [-1 -2 -1; 0 0 0; 1 2 1]; % Sobel算子的y方向模板
 
% 行检测(注释说明了不推荐手动执行卷积操作的原因)
edge_x = imfilter(double(img_gray), sobel_x, 'same', 'replicate'); % 使用Sobel x方向模板进行滤波
edge_x = uint8(255 * mat2gray(edge_x)); % 将滤波结果归一化到0-255范围并转换为uint8类型
 
% 列检测(同理,使用Sobel y方向模板进行滤波)
edge_y = imfilter(double(img_gray), sobel_y, 'same', 'replicate'); % 使用Sobel y方向模板进行滤波
edge_y = uint8(255 * mat2gray(edge_y)); % 将滤波结果归一化到0-255范围并转换为uint8类型
 
% 显示结果
figure; % 创建一个新的显示窗口
% 原图
subplot(1, 3, 1); % 在1行3列的子图中占据第1个位置
imshow(img_gray); % 显示灰度图像
title('原图'); % 设置标题
 
% 行检测
subplot(1, 3, 2); % 在1行3列的子图中占据第2个位置
imshow(edge_x); % 显示行检测的结果
title('行检测'); % 设置标题
 
% 列检测
subplot(1, 3, 3); % 在1行3列的子图中占据第3个位置
imshow(edge_y); % 显示列检测的结果
title('列检测'); % 设置标题

       结果:

代码:

% 读取CT图像
ct_img = imread('1.png'); % 替换为你的CT图像路径
ct_img_gray = rgb2gray(ct_img); % 转换为灰度图像
 
% 1. 使用高斯滤波进行预处理,减少噪声
filtered_img = imgaussfilt(ct_img_gray, 2); % 对灰度图像进行高斯滤波
 
% 2. 使用拉普拉斯滤波进行细节增强
laplacian_kernel = [0 -1  0; -1  4 -1; 0 -1  0]; % 拉普拉斯算子
detail_enhanced = imfilter(double(filtered_img), laplacian_kernel, 'same', 'replicate'); % 对滤波后的图像进行拉普拉斯滤波
detail_enhanced = double(filtered_img) - detail_enhanced; % 使用原图减去拉普拉斯滤波结果进行细节增强
detail_enhanced = uint8(detail_enhanced); % 转换为uint8类型
 
% 定义Sobel算子
sobel_x = [-1 0 1; -2 0 2; -1 0 1]; % Sobel算子的x方向分量
sobel_y = [-1 -2 -1; 0 0 0; 1 2 1]; % Sobel算子的y方向分量
 
% 3. 使用Sobel 边缘检测增强边缘
edge_x = imfilter(double(detail_enhanced), sobel_x, 'same', 'replicate'); % 对细节增强后的图像进行x方向Sobel滤波
edge_y = imfilter(double(detail_enhanced), sobel_y, 'same', 'replicate'); % 对细节增强后的图像进行y方向Sobel滤波
edge_magnitude = sqrt(edge_x.^2 + edge_y.^2); % 计算边缘强度
edge_magnitude = uint8(255 * (edge_magnitude - min(edge_magnitude(:))) / (max(edge_magnitude(:)) - min(edge_magnitude(:)))); % 归一化到0-255范围
 
% 4. 对比度受限的低对比度区域使用自适应直方图均衡化提升对比度
adapthisteq_img = adapthisteq(detail_enhanced); % 对细节增强后的图像进行自适应直方图均衡化
 
% 5. 用中值滤波去除噪声点
final_img = medfilt2(adapthisteq_img, [3 3]); % 对自适应直方图均衡化后的图像进行中值滤波
 
% 6. 分析比较不同阶段的图像效果
figure;
subplot(2, 3, 1);
imshow(ct_img_gray);
title('原图');
 
subplot(2, 3, 2);
imshow(filtered_img);
title('高斯滤波后');
 
subplot(2, 3, 3);
imshow(detail_enhanced);
title('拉普拉斯细节增强后');
 
subplot(2, 3, 4);
imshow(edge_magnitude);
title('Sobel边缘检测后');
 
subplot(2, 3, 5);
imshow(adapthisteq_img);
title('自适应直方图均衡化后');
 
subplot(2, 3, 6);
imshow(final_img);
title('最终增强图');
% 7. 将上述所有滤波方法进行优化组合获得增强图(已在上一步完成)

结果:

五、结语

       uu们!本章实验的实验结果到此就结束了,临近春节,给自己放个假才让我们更好的去面对崭新的2025,uu们,下一章我们见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2284047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++——list的了解和使用

目录 引言 forward_list与list 标准库中的list 一、list的常用接口 1.list的迭代器 2.list的初始化 3.list的容量操作 4.list的访问操作 5.list的修改操作 6.list的其他操作 二、list与vector的对比 结束语 引言 本篇博客要介绍的是STL中的list。 求点赞收藏评论…

移动光猫怎么自己改桥接模式?

环境: 型号H3-8s 问题描述: 家里宽带用的是H3-8s 光猫,想改桥接模式。 解决方案: 1.默认管理员账号和密码: 账号:CMCCAdmin 密码:aDm8H%MdAWEB页面我试了登陆不了,显示错误 …

MiniMax-01中Lightning Attention的由来(线性注意力进化史)

目录 引言原始注意力线性注意力因果模型存在的问题累加求和操作的限制Lightning AttentionLightning Attention-1Lightning Attention-2 备注 引言 MiniMax-01: Scaling Foundation Models with Lightning Attention表明自己是第一个将线性注意力应用到如此大规模的模型&#…

汽车网络信息安全-ISO/SAE 21434解析(中)

目录 第七章-分布式网络安全活动 1. 供应商能力评估 2. 报价 3. 网络安全职责界定 第八章-持续的网络安全活动 1. 网路安全监控 2. 网络安全事件评估 3. 漏洞分析 4. 漏洞管理 第九章-概念阶段 1. 对象定义 2. 网路安全目标 3. 网络安全概念 第十章 - 产品开发 第十…

LLaMA-Factory 微调LLaMA3

LoRA介绍 LoRA(Low-Rank Adaptation)是一种用于大模型微调的技术, 通过引入低秩矩阵来减少微调时的参数量。在预训练的模型中, LoRA通过添加两个小矩阵B和A来近似原始的大矩阵ΔW,从而减 少需要更新的参数数量。具体来…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.17 时间魔法:处理千万级时间序列的秘籍

1.17 时间魔法:处理千万级时间序列的秘籍 目录 #mermaid-svg-fa6SvjKCpmJ6C2BY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fa6SvjKCpmJ6C2BY .error-icon{fill:#552222;}#mermaid-svg-fa6SvjKCpmJ6…

WPS数据分析000009

一、函数与数据透视表统计数据时效率差异 函数 F4绝对引用 数据透视表 二、数据透视表基础操作 数据透视表:一个快速的生成报表的工具 显示详细信息 方式一; 方式二: 移动数据透视表 删除数据透视表 复制粘贴数据透视表 留足空间,否则拖动字…

Ansible自动化运维实战--script、unarchive和shell模块(6/8)

文章目录 一、script模块1.1、功能1.2、常用参数1.3、举例 二、unarchive模块2.1、功能2.2、常用参数2.3、举例 三、shell模块3.1、功能3.2、常用参数3.3、举例 一、script模块 1.1、功能 Ansible 的 script 模块允许你在远程主机上运行本地的脚本文件,其提供了一…

K8S 快速实战

K8S 核心架构原理: 我们已经知道了 K8S 的核心功能:自动化运维管理多个容器化程序。那么 K8S 怎么做到的呢?这里,我们从宏观架构上来学习 K8S 的设计思想。首先看下图: K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责核心的调度、管理和运维,Slave…

用Python和PyQt5打造一个股票涨幅统计工具

在当今的金融市场中,股票数据的实时获取和分析是投资者和金融从业者的核心需求之一。无论是个人投资者还是专业机构,都需要一个高效的工具来帮助他们快速获取股票数据并进行分析。本文将带你一步步用Python和PyQt5打造一个股票涨幅统计工具,不…

猿人学第一题 js混淆源码乱码

首先检查刷新网络可知,m参数被加密,这是一个ajax请求 那么我们直接去定位该路径 定位成功 观察堆栈之后可以分析出来这应该是一个混淆,我们放到解码平台去还原一下 window["url"] "/api/match/1";request function…

【学术会议征稿】第五届能源、电力与先进热力系统学术会议(EPATS 2025)

能源、电力与先进热力系统设计是指结合物理理论、工程技术和计算机模拟,对能源转换、利用和传输过程进行设计的学科领域。它涵盖了从能源的生产到最终的利用整个流程,旨在提高能源利用效率,减少能源消耗和环境污染。 重要信息 官网&#xf…

对神经网络基础的理解

目录 一、《python神经网络编程》 二、一些粗浅的认识 1) 神经网络也是一种拟合 2)神经网络不是真的大脑 3)网络构建需要反复迭代 三、数字图像识别的实现思路 1)建立一个神经网络类 2)权重更新的具体实现 3&am…

redis的分片集群模式

redis的分片集群模式 1 主从哨兵集群的问题和分片集群特点 主从哨兵集群可应对高并发写和高可用性,但是还有2个问题没有解决: (1)海量数据存储 (2)高并发写的问题 使用分片集群可解决,分片集群…

【29】Word:李楠-学术期刊❗

目录 题目​ NO1.2.3.4.5 NO6.7.8 NO9.10.11 NO12.13.14.15 NO16 题目 NO1.2.3.4.5 另存为手动/F12Fn光标来到开头位置处→插入→封面→选择花丝→根据样例图片,对应位置填入对应文字 (手动调整即可)复制样式:开始→样式对话框→管理…

基于 AI Coding 「RTC + STT」 Web Demo

文章目录 1. 写在最前面1.1 旧测试流程1.2 新测试流程 2. Cursor 编程 vs Copilot 编程2.1 coding 速度2.2 coding 正确性 3. 碎碎念 1. 写在最前面 为了 Fix 语音转文字(STT)产品在 Json 协议支持上的问题,笔者需要将推送到 RTC 的数据按照…

dup2 + fgets + printf 实现文件拷贝

思路 将源文件的内容读取到内存中,然后将这些内容写入到目标文件。 1: 打开源文件、目标文件 fopen() 以读模式打开源文件。 open ()以写模式打开目标文件。 2: 读取源文件、写入目标文件 fgets ()从源文件中读取内容。 printf ()将内容写入目标文件。 printf…

[ACTF2020 新生赛]Upload1

题目 以为是前端验证&#xff0c;试了一下PHP传不上去 可以创建一个1.phtml文件。对.phtml文件的解释: 是一个嵌入了PHP脚本的html页面。将以下代码写入该文件中 <script languagephp>eval($_POST[md]);</script><script languagephp>system(cat /flag);&l…

SpringBoot整合Swagger UI 用于提供接口可视化界面

目录 一、引入相关依赖 二、添加配置文件 三、测试 四、Swagger 相关注解 一、引入相关依赖 图像化依赖 Swagger UI 用于提供可视化界面&#xff1a; <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactI…

深度学习项目--基于LSTM的糖尿病预测探究(pytorch实现)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 LSTM模型一直是一个很经典的模型&#xff0c;一般用于序列数据预测&#xff0c;这个可以很好的挖掘数据上下文信息&#xff0c;本文将使用LSTM进行糖尿病…