基于准则匹配的图像对准

news2024/11/16 9:16:21

一、概述

  在图像处理相关的问题中,图像对准是一类典型的问题,也就是要将两幅图严丝合缝地对应起来。通常来讲,两幅图大小不一,一个是模板,一个是母图,也就是要在母图中搜寻定位到与模板图最为接近的区域。
  实现的方式有很多,惯常使用的是基于准则匹配的方法和基于特征匹配的方法。基于准则匹配,就是直接地对图的灰度值矩阵进行计算操作,以特定的准则遍历整个母图,找到与目标图(模板图)最相近的子区域;基于特征匹配,就是先提取出图像特征,再基于特征进行操作。这里对基于准则匹配的图像对准基本方法做简单介绍。

二、匹配准则

  常见的匹配准则有SAD、MAD、SSD、MSD、NCC。前四种是基于两个矩阵的向量差做运算,NCC是计算两个矩阵的相关系数。事实上,矩阵是一个高阶向量(二阶张量),对两个矩阵向量作差,就得到差向量,对差向量做分析运算,便可在一定程度上获得两个矩阵间的差异性信息。
A = ( a i j ) A=\left( a_{ij} \right) A=(aij), B = ( b i j ) B=\left( b_{ij} \right) B=(bij), i = 1 , 2 , . . . , M i=1,2,...,M i=1,2,...,M, j = 1 , 2 , . . . , N j=1,2,...,N j=1,2,...,N.则差向量 D = A − B = ( a i j − b i j ) \begin{equation} \begin{aligned} D&=A-B\\&=\left( a_{ij}-b_{ij} \right) \end{aligned} \end{equation} D=AB=(aijbij)

(1) SAD

  SAD,绝对误差算法(Sum of Absolute Differences),它是差向量D中各元素的绝对值之和,也就是L1范数,是两个向量间的曼哈顿距离。表达式为 S A D = ∑ i = 1 M ∑ j = 1 N ∣ a i j − b i j ∣ \begin{equation} \begin{aligned}SAD=\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left| a_{ij}-b_{ij} \right|}}\end{aligned} \end{equation} SAD=i=1Mj=1Naijbij

(2) MAD

  MAD,平均绝对误差算法(Mean Absolute Differences),它是在SAD基础上进一步求平均值。表达式为 M A D = 1 M × N ∑ i = 1 M ∑ j = 1 N ∣ a i j − b i j ∣ \begin{equation} \begin{aligned}MAD=\frac{1}{M\times N}\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left| a_{ij}-b_{ij} \right|}}\end{aligned} \end{equation} MAD=M×N1i=1Mj=1Naijbij

(3) SSD

  SSD,误差平方和算法(Sum of Squared Differences),它是差向量D中各元素的平方和。表达式为 S S D = ∑ i = 1 M ∑ j = 1 N ( a i j − b i j ) 2 \begin{equation} \begin{aligned}SSD=\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( a_{ij}-b_{ij} \right)^{2}}}\end{aligned} \end{equation} SSD=i=1Mj=1N(aijbij)2

(4) MSD

  MSD,平均误差平方和算法(Mean Square Differences),它是在SSD的基础上进一步求平均值。表达式为 M S D = 1 M × N ∑ i = 1 M ∑ j = 1 N ( a i j − b i j ) 2 \begin{equation} \begin{aligned}MSD=\frac{1}{M\times N}\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( a_{ij}-b_{ij} \right)^{2}}}\end{aligned} \end{equation} MSD=M×N1i=1Mj=1N(aijbij)2

(5) NCC

  NCC,归一化互相关算法(Normalized Cross Correlation)。若将两个矩阵看做两个随机变量,那么NCC就是两个变量之间的皮尔逊相关系数。同时,它也是两个矩阵向量在各自中心化之后彼此间空间夹角的余弦值。它的表达式为 N C C = ∑ i = 1 M ∑ j = 1 N ( a i j − E ( A ) ) ( b i j − E ( B ) ) ∑ i = 1 M ∑ j = 1 N ( a i j − E ( A ) ) 2 ⋅ ∑ i = 1 M ∑ j = 1 N ( b i j − E ( B ) ) 2 \begin{equation} \begin{aligned}NCC=\frac{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( a_{ij}-E(A) \right)\left( b_{ij}-E(B) \right)}}}{\sqrt{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( a_{ij}-E(A) \right)^{2}}}}\cdot\sqrt{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( b_{ij}-E(B) \right)^{2}}}}}\end{aligned} \end{equation} NCC=i=1Mj=1N(aijE(A))2 i=1Mj=1N(bijE(B))2 i=1Mj=1N(aijE(A))(bijE(B))
  易知,ncc值的范围为 [ − 1 , 1 ] [−1,1] [1,1],越接近1,两个矩阵越相关;越接近-1,两个矩阵越不相关。


等同于皮尔逊相关系数
  皮尔逊相关系数,用以衡量两个变量间的线性相关性。它的表达式为 P e a r s o n = C o v ( X , Y ) D ( X ) ⋅ D ( Y ) = E ( X − E X ) ( Y − E Y ) D ( X ) ⋅ D ( Y ) \begin{equation} \begin{aligned} Pearson&=\frac{Cov\left( X,Y \right)}{\sqrt{D\left( X \right)}\cdot\sqrt{D\left( Y \right)}}\\&=\frac{E\left( X-EX \right)\left( Y-EY \right)}{\sqrt{D\left( X \right)}\cdot\sqrt{D\left( Y \right)}} \end{aligned} \end{equation} Pearson=D(X) D(Y) Cov(X,Y)=D(X) D(Y) E(XEX)(YEY)  将两个矩阵看做两个随机变量代入,有 P e a r s o n = 1 M × N ∑ i = 1 M ∑ j = 1 N ( a i j − E ( A ) ) ( b i j − E ( B ) ) ∑ i = 1 M ∑ j = 1 N ( a i j − E ( A ) ) 2 M × N ⋅ ∑ i = 1 M ∑ j = 1 N ( b i j − E ( B ) ) 2 M × N = ∑ i = 1 M ∑ j = 1 N ( a i j − E ( A ) ) ( b i j − E ( B ) ) ∑ i = 1 M ∑ j = 1 N ( a i j − E ( A ) ) 2 ∑ i = 1 M ∑ j = 1 N ( b i j − E ( B ) ) 2 = N C C \begin{equation} \begin{aligned} Pearson&=\frac{\frac{1}{M\times N}\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( a_{ij}-E(A) \right)\left( b_{ij}-E(B) \right)}}}{\sqrt{\frac{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( a_{ij}-E(A) \right)^{2}}}}{M\times N}}\cdot\sqrt{\frac{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( b_{ij}-E(B) \right)^{2}}}}{M\times N}}}\\&=\frac{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( a_{ij}-E(A) \right)\left( b_{ij}-E(B) \right)}}}{\sqrt{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( a_{ij}-E(A) \right)^{2}}}} \sqrt{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( b_{ij}-E(B) \right)^{2}}}}}\\&=NCC \end{aligned} \end{equation} Pearson=M×Ni=1Mj=1N(aijE(A))2 M×Ni=1Mj=1N(bijE(B))2 M×N1i=1Mj=1N(aijE(A))(bijE(B))=i=1Mj=1N(aijE(A))2 i=1Mj=1N(bijE(B))2 i=1Mj=1N(aijE(A))(bijE(B))=NCC

等同于余弦距离
  余弦距离即空间向量夹角的余弦值,通常用以衡量两个向量间的差异度。它的表达式为 c o s θ = < X , Y > ∣ X ∣ ⋅ ∣ Y ∣ \begin{equation} \begin{aligned}cos\theta=\frac{<X,Y>}{\left| X \right|\cdot\left| Y \right|}\end{aligned} \end{equation} cosθ=XY<X,Y>  将两个矩阵向量去中心化后代入,有 c o s θ = < A − E ( A ) , B − E ( B ) > ∣ A − E ( A ) ∣ ⋅ ∣ B − E ( B ) ∣ = ∑ i = 1 M ∑ j = 1 N ( a i j − E ( A ) ) ( b i j − E ( B ) ) ∑ i = 1 M ∑ j = 1 N ( a i j − E ( A ) ) 2 ∑ i = 1 M ∑ j = 1 N ( b i j − E ( B ) ) 2 = N C C \begin{equation} \begin{aligned} cos\theta&=\frac{<A-E(A),B-E(B)>}{\left| A-E(A) \right|\cdot\left| B-E(B) \right|}\\&=\frac{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( a_{ij}-E(A) \right)\left( b_{ij}-E(B) \right)}}}{\sqrt{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( a_{ij}-E(A) \right)^{2}}}}\sqrt{\sum_{i=1}^{M}{\sum_{j=1}^{N}{\left( b_{ij}-E(B) \right)^{2}}}}}\\&=NCC \end{aligned} \end{equation} cosθ=AE(A)BE(B)<AE(A),BE(B)>=i=1Mj=1N(aijE(A))2 i=1Mj=1N(bijE(B))2 i=1Mj=1N(aijE(A))(bijE(B))=NCC

三、matlab实现

(1) SAD

clear all;
close all; clc;

%1.读取图片
img_A_dir = '.\data\lena.bmp';  %待寻母图
img_A_raw = imread(img_A_dir);
[r1,c1,d1] = size(img_A_raw);
if d1==3 %灰度化
    img_A = rgb2gray(img_A_raw);
else
    img_A = img_A_raw;
end

img_B_dir = '.\data\refer.bmp';  %模板图
img_B_raw = imread(img_B_dir);
[r2,c2,d2] = size(img_B_raw);
if d2==3
    img_B = rgb2gray(img_B_raw);
else
    img_B = img_B_raw;
end

%2.计算SAD矩阵
msad = zeros(r1-r2,c1-c2);

for i = 1:r1-r2
    for j = 1:c1-c2
        temp = img_A(i:i+r2-1,j:j+c2-1);        
        msad(i,j) = msad(i,j) + sum(sum(abs(temp - img_B)));    
    end
end

%3.定位匹配位置
min_sad = min(min(msad));
[x,y] = find(msad == min_sad);
x = x(1); %定位到的第一个位置
y = y(1);

%4.保存结果图
getImg = img_A_raw(x:x+r2-1,y:y+c2-1,1:3);
imwrite(getImg,'.\output\SAD_match.bmp');

fprintf('\n Done. \n');
在这里插入代码片

在这里插入图片描述

(2) MAD

clear all;
close all; clc;

%1.读取图片
img_A_dir = '.\data\lena.bmp';  %待寻母图
img_A_raw = imread(img_A_dir);
[r1,c1,d1] = size(img_A_raw);
if d1==3 %灰度化
    img_A = rgb2gray(img_A_raw);
else
    img_A = img_A_raw;
end

img_B_dir = '.\data\refer.bmp';  %模板图
img_B_raw = imread(img_B_dir);
[r2,c2,d2] = size(img_B_raw);
if d2==3
    img_B = rgb2gray(img_B_raw);
else
    img_B = img_B_raw;
end

%2.计算MAD矩阵
mmad = zeros(r1-r2,c1-c2);

for i = 1:r1-r2
    for j = 1:c1-c2
        temp = img_A(i:i+r2-1,j:j+c2-1);        
        mmad(i,j) = mmad(i,j) + sum(sum(abs(temp - img_B)))/(r2*c2);    
    end
end

%3.定位匹配位置
min_mad = min(min(mmad));
[x,y] = find(mmad == min_mad);
x = x(1); %定位到的第一个位置
y = y(1);

%4.保存结果图
getImg = img_A_raw(x:x+r2-1,y:y+c2-1,1:3);
imwrite(getImg,'.\output\MAD_match.bmp');

fprintf('\n Done. \n');

在这里插入图片描述

(3) SSD

clear all;
close all; clc;

%1.读取图片
img_A_dir = '.\data\lena.bmp';  %待寻母图
img_A_raw = imread(img_A_dir);
[r1,c1,d1] = size(img_A_raw);
if d1==3 %灰度化
    img_A = rgb2gray(img_A_raw);
else
    img_A = img_A_raw;
end

img_B_dir = '.\data\refer.bmp';  %模板图
img_B_raw = imread(img_B_dir);
[r2,c2,d2] = size(img_B_raw);
if d2==3
    img_B = rgb2gray(img_B_raw);
else
    img_B = img_B_raw;
end

%2.计算SSD矩阵
mssd = zeros(r1-r2,c1-c2);

for i = 1:r1-r2
    for j = 1:c1-c2
        temp = img_A(i:i+r2-1,j:j+c2-1);        
        mssd(i,j) = mssd(i,j) + sum(sum((temp - img_B).^2));    
    end
end

%3.定位匹配位置
min_ssd = min(min(mssd));
[x,y] = find(mssd == min_ssd);
x = x(1); %定位到的第一个位置
y = y(1);

%4.保存结果图
getImg = img_A_raw(x:x+r2-1,y:y+c2-1,1:3);
imwrite(getImg,'.\output\SSD_match.bmp');

fprintf('\n Done. \n');

在这里插入图片描述

(4) MSD

clear all;
close all; clc;

%1.读取图片
img_A_dir = '.\data\lena.bmp';  %待寻母图
img_A_raw = imread(img_A_dir);
[r1,c1,d1] = size(img_A_raw);
if d1==3 %灰度化
    img_A = rgb2gray(img_A_raw);
else
    img_A = img_A_raw;
end

img_B_dir = '.\data\refer.bmp';  %模板图
img_B_raw = imread(img_B_dir);
[r2,c2,d2] = size(img_B_raw);
if d2==3
    img_B = rgb2gray(img_B_raw);
else
    img_B = img_B_raw;
end

%2.计算MSD矩阵
mmsd = zeros(r1-r2,c1-c2);

for i = 1:r1-r2
    for j = 1:c1-c2
        temp = img_A(i:i+r2-1,j:j+c2-1);        
        mmsd(i,j) = mmsd(i,j) + sum(sum((temp - img_B).^2))/(r2*c2);    
    end
end

%3.定位匹配位置
min_msd = min(min(mmsd));
[x,y] = find(mmsd == min_msd);
x = x(1); %定位到的第一个位置
y = y(1);

%4.保存结果图
getImg = img_A_raw(x:x+r2-1,y:y+c2-1,1:3);
imwrite(getImg,'.\output\MSD_match.bmp');

fprintf('\n Done. \n');

在这里插入图片描述

(5) NCC

clear all;
close all; clc;

%1.读取图片
img_A_dir = '.\data\lena.bmp';  %待寻母图
img_A_raw = imread(img_A_dir);
[r1,c1,d1] = size(img_A_raw);
if d1==3 %灰度化
    img_A = rgb2gray(img_A_raw);
else
    img_A = img_A_raw;
end

img_B_dir = '.\data\refer.bmp';  %模板图
img_B_raw = imread(img_B_dir);
[r2,c2,d2] = size(img_B_raw);
if d2==3
    img_B = rgb2gray(img_B_raw);
else
    img_B = img_B_raw;
end

%2.计算NCC矩阵
mNCC = zeros(r1-r2,c1-c2);

for i = 1:r1-r2
    for j = 1:c1-c2
        
        temp = img_A(i:i+r2-1,j:j+c2-1);   
        
        mean_temp = mean(temp(:)); %temp均值
        mean_B = mean(img_B(:));  %img_B均值      
        
        inp = sum(sum((temp - mean_temp).*(img_B - mean_B))); %两向量内积        
        mod1 = sqrt(sum(sum((temp - mean_temp).^2))); %模长1
        mod2 = sqrt(sum(sum((img_B - mean_B).^2))); %模长2        
        ncc = inp / (mod1*mod2);       
        
        mNCC(i,j) = mNCC(i,j) + ncc;                             
    end
end


%3.定位匹配位置
max_ncc = max(max(mNCC)); %最大ncc值
[x,y] = find(mNCC == max_ncc);
x = x(1); %定位到的第一个位置
y = y(1);

%4.保存结果图
getImg = img_A_raw(x:x+r2-1,y:y+c2-1,1:3);
imwrite(getImg,'.\output\NCC_match.bmp');

fprintf('\n Done. \n');

在这里插入图片描述


End.

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

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

相关文章

QML教程(七) JavaScript

目录 一、对属性值使用 JavaScript 表达式 二、在 QML 中添加 JavaScript 函数 三、使用 JavaScript 文件 四、属性绑定中的 JavaScript 五、信号处理程序中的 JavaScript 六、将信号连接到 JavaScript 函数 七、启动执行 JavaScript QML 提供的 JavaScript 主机环境可以…

算法学习-并查集(持续更新中)

本文参考&#xff1a; 最容易理解的并查集详解 详解&#xff1a;并查集&#xff08;Union-Find&#xff09; 「代码随想录」684. 冗余连接:【并查集基础题目】详解&#xff01; 并查集从入门到出门 并查集常常在做图相关的题目时冒出来&#xff0c;但是笔者经常去回避这样的解法…

Exynos_4412——轮询与中断

目录 一、CPU与硬件的交互方式 1.1轮询 1.2中断 1.3DMA 二、轮询方式的按键实验 三、GPIO中断相关寄存器 四、GPIO中断编程 五、小作业 一、CPU与硬件的交互方式 1.1轮询 CPU执行程序时不断地询问硬件是否需要其服务&#xff0c;若需要则给予其服务&#xff0c;若不需…

Android Jetpack Compose——一个简单的微信界面

一个简单的微信界面简述效果视频底部导航栏导航元素导航栏放入插槽绘制地图消息列表效果图实现聊天效果图实现气泡背景联系人界面效果图实现好友详情效果图实现发现效果图实现未读红点未读条数朋友圈效果图实现上拉加载个人设置效果图实现个人信息功能区钱包效果图实现切换主题…

【Vue】项目搭建规范

1. 集成editorconfig配置 EditorConfig 有助于为不同 IDE 编辑器上处理同一项目的多个开发人员维护一致的编码风格。 VSCode需要安装一个插件&#xff1a;EditorConfig for VS Code 创建 .editorconfig 文件&#xff1a; # http://editorconfig.orgroot true[*] # 表示所有文…

js Proxy 的使用

文章目录一、什么是Proxy二、语法三、Proxy 方法1、get() 方法2、set() 方法3、apply() 方法4、has() 方法5、construct() 方法6、deleteProperty() 方法一、什么是Proxy Proxy 可以理解成&#xff0c;在目标对象之前架设一层“拦截”&#xff0c;外界对该对象的访问&#xff…

[Vulnhub] DC-2

Vlunhub下DC系列靶机第二台&#xff0c;难度与DC-1 差不多&#xff0c;为简单。共有五个Flag 下载地址&#xff1a;Vulnhub:DC-2 目录 信息搜集 cewl爬行网站字典&hydra爆破wordpress用户密码 -rbash逃逸 git提权 信息搜集 nmap -sP 192.168.236.0/24 扫描一下靶机i…

c++语法欠缺地方(持续更新)

sizeof是用来计算变量占多大内存的&#xff0c;单位是字节&#xff08;byte&#xff09;&#xff1b;sizeof 后面跟类型时&#xff0c;必须加上括号&#xff0c;例如sizeof(double);后面跟变量可以不用加括号&#xff0c;例如&#xff1a;sizeof d %d是以十进制形式输出有符号…

hadoop之kerberos权限配置(ranger基础上)(三)

文章目录一、kerberos服务端二、kerberos客户端三、hadoop集群安装HTTPS服务四、kerberos整合zk五、kerberos整合ranger六、kerberos整合hdfs七、kerberos整合yarn八、kerberos整合hive九、kerberos整合hbase十、遇到的问题一、kerberos服务端 上传kerberos安装包到/opt/rpm 安…

数据库,计算机网络、操作系统刷题笔记22

数据库&#xff0c;计算机网络、操作系统刷题笔记22 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle…

最值得推荐的3个免费PDF 转换器

当您需要将 PDF 转换为另一种格式&#xff08;如 Microsoft Word、图像&#xff08;如 JPG&#xff09;、Excel、电子书、PowerPoint 等&#xff0c;反之亦然&#xff09;时&#xff0c;最好的 PDF 转换器非常重要。 但是找到一个可靠的 PDF 转换软件来使用是具有挑战性的。因…

JAVA设计模式--行为型模式--策略模式

1.策略模式&#xff08;Strategy Pattern&#xff09; 1.1介绍 一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中&#xff0c;我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对…

【C++】网络编程(TCPUDP)

网络编程是C API操作中很重要的一部分&#xff0c;包含TCP和UDP。 网络传输模型可以抽象为7个层&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 但在使用TCP/IP协议时&#xff0c;可以简化为这4层&#xff1a;网络接口、网络层、传输层、应用层。…

物理层基本概念

目录物理层的基本概念物理层传输方式串行传输并行传输同步传输异步传输单向通信&#xff08;单工&#xff09;双向交替通信&#xff08;半双工&#xff09;双向同时通信&#xff08;全双工&#xff09;编码与调制常用编码基本调制方法信道极限容量物理层的基本概念 物理层考虑的…

路由 OSPF常见4种网络类型MA、P2P、NBMA、P2MP、OSPF报头字段信息简介。

4.2.1 路由 OSPF&#xff08;OSPF常见4种网络类型、OSPF报头信息&#xff09; 目录OSPF常见的4种网络类型广播类型&#xff08;Broadcast 或 MA&#xff09;P2PNBMAP2MPOSPF报文发送形式对于不同OSPF网络类型的组网OSPF报头信息实际抓包分析OSPF常见的4种网络类型 OSPF应用于不…

Kali最强渗透工具- metasploit

数据来源 本文仅用于信息安全学习&#xff0c;请遵守相关法律法规&#xff0c;严禁用于非法途径。若观众因此作出任何危害网络安全的行为&#xff0c;后果自负&#xff0c;与本人无关。 metasploit是什么&#xff1f; msf是一款开源安全漏洞利用和测试工具&#xff0c;集成了…

C++GUI之wxWidgets(9)-编写应用涉及的类和方法(4)-事件处理(3)

目录动态事件处理如何处理事件事件如何向上传播事件处理程序链动态事件处理 void MyFrameHandler::OnFrameExit(wxCommandEvent&) {// Do something useful. }MyFrameHandler myFrameHandler;MyFrame::MyFrame() {Bind(wxEVT_MENU, &MyFrameHandler::OnFrameExit,&…

Java数组的定义与使用

Java数组的定义与使用 文章目录Java数组的定义与使用数组的基本概念什么是数组数组的创建数组的初始化数组的使用数组中元素访问遍历数组数组是引用类型初始JVM的内存分布基本类型变量与引用类型变量的区别引用变量几道例题认识null数组的应用场景保存数据作为函数的参数参数传…

TypeScript中的泛型

泛型&#xff08;Generics&#xff09;是指在定义函数、接口或类的时候&#xff0c;不预先指定具体的类型&#xff0c;而在使用的时候再指定类型的一种特性。 通常用T来指代任意输入的类型&#xff0c;除了T之外&#xff0c;以下是常见泛型变量代表的意思&#xff1a; K(Key…

信息安全技术 可信计算规范 可信平台控制模块 学习笔记(一)

声明 本文是学习信息安全技术 可信计算规范 可信平台控制模块. 下载地址而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 可信计算规范 缩略语 下列缩略语适用于本文件。 I/O&#xff1a;输入输出&#xff08;Input/Output&#xff09; IP&#xff1…