【图像处理】图像配准、图像增强和图像分割研究(Matlab代码实现)

news2025/2/1 10:54:24

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

2.1 图像分割

2.2 图像增强

2.3 图像配准

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

图像处理领域涉及到许多重要的技术,其中包括图像配准、图像增强和图像分割。这些技术在不同的图像应用中发挥着重要的作用。

图像配准是指将多幅图像在空间上进行对齐,使得它们在几何、形状和灰度上具有一致性。常见的图像配准方法包括基于特征点的配准和基于互信息的配准。图像配准在医学影像、遥感影像等领域中广泛应用,用于将不同视角或不同时间拍摄的图像进行对比和分析。

图像增强是改善图像质量和提高图像视觉效果的过程。通过调整图像的亮度、对比度、锐化等参数,可以增强图像的细节并改善图像的可视化效果。图像增强在计算机视觉、数字摄影和图像分析等应用中具有重要意义,例如在低光照条件下提高图像可见度、减少噪声等。

图像分割指的是将图像划分为不同的区域或对象的过程。图像分割可以通过基于阈值、边缘检测、区域生长等方法实现。它在目标检测、图像识别和计算机辅助诊断等领域中具有广泛应用,可以帮助提取图像中的目标或感兴趣的区域。

综上,图像配准、图像增强和图像分割是图像处理领域中的重要研究方向。它们在各种图像应用中发挥着重要的作用,帮助我们更好地理解、分析和利用图像信息。

📚2 运行结果

2.1 图像分割

 

2.2 图像增强

2.3 图像配准

部分代码:

%% View the images side by side in a montage
imshowpair(Fixed,Moving,'montage');

%% Configure parameters in imregconfig
[optimizer,metric] = imregconfig('Multimodal');

%% Default registration
registered = imregister(Moving,Fixed,'translation',optimizer,metric);
figure;
imshowpair(registered,Fixed);
title('falsecolor');

%% Change visualization in imshowpair
figure;
imshowpair(registered,Fixed,'blend');

%% Change transformType in imregister
registered = imregister(Moving, Fixed,'affine',optimizer,metric);
figure;
imshowpair(registered,Fixed);
title('Intermediate Registration');

%% Final registration
registered = imregister(Moving, Fixed,'Similarity',optimizer,metric);
figure;
imshowpair(registered,Fixed);title('Final Registration');

%% Detect the eyes in the RGB image
eyesDet = vision.CascadeObjectDetector('EyePairSmall');
bbox = step(eyesDet, Moving);
drawBox = vision.ShapeInserter('BorderColor','Black');
image = step(drawBox, registered, int32(bbox));
hold on; rectangle('Position',bbox,'EdgeColor',[1 1 0]);
subsIR = int32(bbox(:,1:2)+bbox(:,3:4)/2);

%% Compute temperature near the eyes
value = mean2(imcrop(registered,bbox));
foreheadTemperature = value/10 - 272; % In Celcius
foreheadTemperature =  (foreheadTemperature*9/5) + 32; % Convert to Farenheit

%% Embed temperature on IR image and display
ti = vision.TextInserter('Color',[255 0 0]);
ti.Location = int32(bbox(:,1:2)+bbox(:,3:4)/2);
ti.Text = sprintf('%3d F', int8(foreheadTemperature));
contAdj = vision.ContrastAdjuster('CustomProductInputDataType',numerictype([],32,8));
imageContrastAdjusted = step(contAdj, Fixed);
textAdded = step(ti, imageContrastAdjusted);
text(320, 180,'98 \circ F ','Color',[1 1 0])

%% View the images side by side in a montage
imshowpair(Fixed,Moving,'montage');

%% Configure parameters in imregconfig
[optimizer,metric] = imregconfig('Multimodal');

%% Default registration
registered = imregister(Moving,Fixed,'translation',optimizer,metric);
figure;
imshowpair(registered,Fixed);
title('falsecolor');

%% Change visualization in imshowpair
figure;
imshowpair(registered,Fixed,'blend');

%% Change transformType in imregister
registered = imregister(Moving, Fixed,'affine',optimizer,metric);
figure;
imshowpair(registered,Fixed);
title('Intermediate Registration');

%% Final registration
registered = imregister(Moving, Fixed,'Similarity',optimizer,metric);
figure;
imshowpair(registered,Fixed);title('Final Registration');

%% Detect the eyes in the RGB image
eyesDet = vision.CascadeObjectDetector('EyePairSmall');
bbox = step(eyesDet, Moving);
drawBox = vision.ShapeInserter('BorderColor','Black');
image = step(drawBox, registered, int32(bbox));
hold on; rectangle('Position',bbox,'EdgeColor',[1 1 0]);
subsIR = int32(bbox(:,1:2)+bbox(:,3:4)/2);

%% Compute temperature near the eyes
value = mean2(imcrop(registered,bbox));
foreheadTemperature = value/10 - 272; % In Celcius
foreheadTemperature =  (foreheadTemperature*9/5) + 32; % Convert to Farenheit

%% Embed temperature on IR image and display
ti = vision.TextInserter('Color',[255 0 0]);
ti.Location = int32(bbox(:,1:2)+bbox(:,3:4)/2);
ti.Text = sprintf('%3d F', int8(foreheadTemperature));
contAdj = vision.ContrastAdjuster('CustomProductInputDataType',numerictype([],32,8));
imageContrastAdjusted = step(contAdj, Fixed);
textAdded = step(ti, imageContrastAdjusted);
text(320, 180,'98 \circ F ','Color',[1 1 0])

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]卞贤掌,费海平,李世强.基于语义分割的增强现实图像配准技术[J].电子技术与软件工程, 2018(23):4.

[2]顾裕.腹部图像分割与增强的自步深度学习研究[D].西安电子科技大学,2020.

[3]周露,张书旭,余辉,等.PET—CT图像配准的预处理研究[J].中国医学物理学杂志, 2013.DOI:CNKI:SUN:YXWZ.0.2013-05-013.

🌈4 Matlab代码实现

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

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

相关文章

网络编程基础知识总结——IP,端口,协议

目录 1. 什么是网络编程? 2. 网络编程的三要素 3. IP 3.1 IP地址的概念 3.2 IP地址的分类 3.3 IPv4解析 3.4 Ipv6解析 4. IPv4 的使用细节 5. 特殊IP地址 4. 端口号 5. 协议 5.1 UDP协议 5.2 TCP协议 1. 什么是网络编程? 总的来说就是一句…

RuntimeWarning: More than 20 figures have been opened

在画图操作结束后使用plt.close(all)语句,但是此时图像仍然不能正常显示,之前是可以正常显示的,然后又在最后的画图的部分添加plt.show()语句,可以正常显示图像并且不再出现警告了。

Android---DVM以及ART对JVM进行优化

Dalvik Dalvik 是 Google 公司自己设计用于 Android 平台的 Java 虚拟机,Android 工程师编写的 Java 或者 Kotlin 代码最终都是在这台虚拟机中被执行的。在 Android 5.0 之前叫作 DVM,5.0 之后改为 ART(Android Runtime)。在整个…

oracle创建数据库,导入dmp操作全家桶

背景:小明在一家IT公司就职,通过查看项目,公司使用的是oracle,几天后,经理要求他从服务器导入数据库到公司服务器,聪明的小明就开始干了起来,整理如下教程。 说明:此次演示环境oracl…

【LeetCode力扣】297. 二叉树的序列化与反序列化

目录 1、题目介绍 2、解题思路 2.1、详细过程图解 2.2、代码描述 2.3、完整代码 1、题目介绍 原题链接:297. 二叉树的序列化与反序列化 - 力扣(LeetCode) 示例 1: 输入:root [1,2,3,null,null,4,5] 输出&#…

代码随想录算法训练营第二十二天丨 二叉树part09

669. 修剪二叉搜索树 思路 递归法 从图中可以看出需要重构二叉树,想想是不是本题就有点复杂了。 其实不用重构那么复杂。 在上图中我们发现节点0并不符合区间要求,那么将节点0的右孩子 节点2 直接赋给 节点3的左孩子就可以了(就是把节点…

mac 移动硬盘推出

最近移动硬盘推出总是出现 磁盘无法推出,因为一个或多个程序正在使用它 的问题 解决办法 首先尽可能关闭所有的应用,然后点击左上角的 点击强制退出,注意其中的预览,这个通常就卡在了这里 然后就可以正常退出了

Python点击exe后报错:Failed to execute script xxxx问题的解决办法

最近工作在弄人脸识别的问题,从gitee来pull了一个但是发现报了一个Failed to execute script XXX的问题 造成这个问题的原因是执行文件exe存放的目录不对,可能在打包前exe文件并不是存在在这个位置。 解决方案将exe文件尝试存在在不同目录下&#xff…

【已解决】No Python at ‘D:\Python\python.exe‘

起因,我把我的python解释器,重新移了个位置,导致我在Pycharm中的爬虫项目启动,结果出现这个问题。 然后,从网上查到了这篇博客: 【已解决】No Python at ‘D:\Python\python.exe‘-CSDN博客 但是,按照上述…

数据结构 - 5(二叉树7000字详解)

一:二叉树的基本概念 1.1树形结构 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 注意&am…

如何删除错误堆栈里的数据

修改某个主数据。然后发现N年前,某位开发在DTP上做了一个错误堆栈。 这里面有很多历史错误信息,有几千条了,一条条删肯定不可能。 如果不删除,DTP增量无法激活,明天处理链肯定出问题。 于是找到一位印度大神的方法&a…

java劳务外包管理系统springboot+vue

当前,系统开发的技术已经发展成熟,而且通过计算机网络可以获取开发工具的使用方法,以及规范化编写的模块化代码,这些知识可以帮助开发者顺利完成本系统的编码工作。 采用JavaMysql的方式设计制作的劳务外包管理系统,在…

【Python、Qt】使用QItemDelegate实现单元格的富文本显示+复选框功能

主打一个 折磨 坑多 陪伴。代码为Python,C的就自己逐条语句慢慢改吧。 Python代码: import sys from types import MethodType from PyQt5.QtCore import Qt,QPoint,QSize,QRect,QEvent from PyQt5.QtGui import QStandardItemModel, QStandardItem,QTe…

LeetCode - 318 最大单词长度乘积(Java JS Py C)

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 318. 最大单词长度乘积 - 力扣(LeetCode) 题目描述 给你一个字符串数组 words ,找出并返回 length(words[i]) * length(words[j]) 的最大值,并且这两个单词…

关于vue3启动的一些错误总结

一、成功解决 npm ERR! ERESOLVE could not resolve 解决办法: npm i --legacy-peer-deps –legacy-peer-deps 作用: 在NPM v7中,现在默认安装peerDependencies。 在很多情况下,这会导致版本冲突,从而中断安装过程。 …

【Transformer系列】关于Transformer的若干问题FAQ解析

一、参考资料 Transformer的细节到底是怎么样的?Transformer 18问 答案解析(1)—史上最全Transformer面试题:灵魂20问帮你彻底搞定Transformer 关于Transformer的若干问题整理记录 Transformer的细节与技巧 二、FAQ Q:什么是Transformer&…

ubuntu修改IP地址

参考:ubuntu修改配置IP地址和DNS的方法总结(4种)_ubuntu设置ip地址-CSDN博客 面对ubuntu18以上的版本,主要有两种界面:图形化界面和纯命令行界面。 图形化界面配置比较简单,命令行配置稍许复杂&#xff0c…

python中的logging的使用

初级应用 import logginglogging.basicConfig(levellogging.INFO,format%(asctime)s| %(filename)s[line:%(lineno)s] |%(levelname)s| %(message)s,datefmt%Y-%m-%d %H:%M:%S,filenamesys.path[0]/running_log.log,filemodea) logging.info(This is log)高级应用 # logging的…

HTTP 响应头 X-Frame-Options

简介 X-Frame-Options HTTP 响应头用来给浏览器一个指示。该指示的作用为&#xff1a;是否允许页面在 <frame>, </iframe> 或者 <object> 中展现。 网站可以使用此功能&#xff0c;来确保自己网站的内容没有被嵌套到别人的网站中去&#xff0c;也从而避免了…