18 SAR图像和光学图像的配准算法(matlab程序)

news2024/11/17 10:27:01

1.简述

      

合成孔径雷达(synthetic aperture radar,SAR)图像配准的主要目标是对同一或不同传感器在不同时间、不同视点捕获的SAR图像进行配准。SAR因具有全天候成像能力和地物穿透能力,因此具有非常广泛的应用,如变化检测[1]、图像融合[2]、目标检测与识别[3]。

图像配准方法可分为两类:基于区域的配准方法和基于特征的配准方法[4]。基于区域的配准方法对噪声敏感,当目标发生形变、旋转、尺寸变换时容易导致算法失败且计算量过大。SAR图像中通常包含许多不同的特征,因此基于特征的配准方法具有较高的计算效率[5]。对SAR图像匹配而言,更具研究意义和实用价值。

基本方案 :
(1)基于边缘提取的方法,即提取 SAR 图像和光学图像边缘特征的基础上按照一定的相似性测度进行匹配。缺点是依赖图像边缘的准确提取,如果边缘提取不够准确则配准效果就受到影响。
(2)基于封闭区域的方法,采用各种分割的方法提取封闭区域或子区,在闭合区域边缘进行匹配,精度和基于边缘类似,但是必须要求图像上存在封闭的边缘,如果没有封闭的边缘则很难实现配准。
(3)基于图像互相关的方法,但是由于 SAR 和光学机理差异大,互相关匹配的方法并不能完全有效。无论是提取图像的边缘还是封闭区域,都是根据原始图像提取边缘,而边缘的提取又会受到局部阈值的影响,阈值的不同会得到不同的边缘,因此基于边缘的方法十分依赖于边缘的提取效果。
 

2.代码

clear;clc;
%%   基于各向异性热扩散方程的SAR图像分割
Img = imread('6.bmp');
Img = rgb2gray(Img);
figure;
imshow(Img);
Img = double(Img);
Img = exp(Img/17);  %11           6

SIZE = size(Img);
SIZEX = SIZE(1,1);
SIZEY = SIZE(1,2);

Total = 0;time = 40;
%%   设定初始阈值
Vector_1 = Img(Img<3);Vector_1 = Vector_1.^2;%2,180                   7        3
Vector_2 = Img(Img>=3 & Img<=254);Vector_2 = Vector_2.^2;              
Vector_3 = Img(Img>254);Vector_3 = Vector_3.^2;
Mark_1 = size(Vector_1);Mark_2 = size(Vector_2);Mark_3 = size(Vector_3);
P_Class(:,:,1) = Mark_1(1,2)/(SIZEX*SIZEY)*ones(SIZEX,SIZEY);
P_Class(:,:,2) = Mark_2(1,2)/(SIZEX*SIZEY)*ones(SIZEX,SIZEY);
P_Class(:,:,3) = Mark_3(1,2)/(SIZEX*SIZEY)*ones(SIZEX,SIZEY);

Sigma(1) = mean(Vector_1);
Sigma(2) = mean(Vector_2);
Sigma(3) = mean(Vector_3);
Mark_1 = 1;Mark_2 = 1;Mark_3 = 1;
disp('准备开始初始分割......');
for m = 1:time
    Vector_1 = 0;Vector_2 = 0;Vector_3 = 0;k = 1:3;
    str = '初始分割已经完成';
    str = strcat(str,num2str(m/time*100.0),'%');
    disp(str);
    for i =1:SIZEX
        for j = 1:SIZEY
            Total = 0;
            for k = 1:3
                Total = Total+1/(Sigma(k)+0.00000001)*exp(-1*Img(i,j)^2/(Sigma(k)+0.00000001))*P_Class(i,j,k);
            end

            for k = 1:3

                P_Class_tem(i,j,k) = 1/(Sigma(k)+0.00000001)*exp(-1*Img(i,j)^2/(Sigma(k)+0.00000001))*P_Class(i,j,k)/(Total+1/inf);
            end
        end
    end
    P_Class = P_Class_tem;
    [Value,Flag] = max(P_Class,[],3);
    Img1 = Img.^2;
    Vector_1 = Img1(Flag==1);
    Vector_2 = Img1(Flag==2);
    Vector_3 = Img1(Flag==3);

    Sigma(1) = std(Vector_1,1);
    Sigma(2) = std(Vector_2,1);
    Sigma(3) = std(Vector_3,1);
    Mark_1 = 1;Mark_2 = 1;Mark_3 = 1;
end
figure, imshow(Flag,[]);
P_Class = abs(1000*P_Class);
disp('初始分割已经完成');
disp('开始平滑后验概率矩阵......');
for i = 1:3
    if i == 3
        P_Class3(:,:,i) = RSRADFilter(P_Class(:,:,i),1.06);
    else 
        P_Class3(:,:,i) = RSRADFilter(P_Class(:,:,i),2.36);
    end
end
for i = 1:SIZEX
       for j = 1:SIZEY
            [Value,Flag(i,j)] = max([P_Class3(i,j,1),P_Class3(i,j,2),P_Class3(i,j,3)]);
       end
end
Flag = WipeSpeckles(Flag);
figure;
imshow(Flag,[]);  

    
    

3.运行结果

 

 

 

 

 

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

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

相关文章

提取背景音乐去掉人声的方法是什么?这几个方法简单做到!

当制作视频或音频时&#xff0c;我们常常需要提取背景音乐并去掉人声。这一过程并不简单&#xff0c;需要一些专业的技巧和工具。相信有些新手小伙伴也不知道该如何操作&#xff0c;下面我们将分享三个方法&#xff0c;希望能够帮助到你。 方法一&#xff1a;使用记灵在线工具…

gma 2 教程(二)数据操作:1. 相关模块组成

考虑到数据读写是地理空间数据分析和应用的基础&#xff0c;因此将本章作为正文第一部分&#xff0c;以便为后续章节应用提供基础支持。本章以gma栅格/矢量数据输入输出模块&#xff08;io&#xff09;栅格/矢量数据的读取、创建、变换等主要操作为基础&#xff0c;配合gma地理…

【达摩院OpenVI】开源CVPR快速实例分割FasInst模型

团队模型、论文、博文、直播合集&#xff0c;点击此处浏览 一、论文&代码 论文&#xff1a;https://arxiv.org/abs/2303.08594 模型&代码&#xff1a;https://modelscope.cn/models/damo/cv_resnet50_fast-instance-segmentation_coco/summary 二、背景 实例分割旨…

2023-7-8-第十四式策略模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

axios拦截器

在请求或响应被 then 或 catch 处理前拦截它们。 // 添加请求拦截器 axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么return config;}, function (error) {// 对请求错误做些什么return Promise.reject(error);});// 添加响应拦截器 axios.inte…

PMSG永磁风机VSG网侧虚拟同步控制一次调频四机两区域系统,离散模型。

PMSGM永磁同步风机VSG虚拟同步机调频两区域系统&#xff0c;离散模型&#xff0c;非无穷大电网。 风机为网侧VSG控制。四机两区域系统&#xff0c;渗透率可调。当前渗透率为区域1&#xff0c;一台900MW同步机&#xff0c;区域2一台900MW同步机&#xff0c;永磁同步风电场容量5…

minio 升级相关问题

系列文章目录 文章目录 系列文章目录前言一、集群部署二、单机部署三、写一个启动脚本四、性能方面 前言 minio版本升级&#xff0c;目的主要是为了解决由 Direct buffer memory 引发的附件下载优化方案 minio version RELEASE.2021-01-16T02-19-44Z > minio version RELEA…

60题学会动态规划系列:动态规划算法第四讲

买卖股票相关的动态规划题目 文章目录 1.买卖股票的最佳时机含冷冻期2.买卖股票的最佳时期含⼿续费3.买卖股票的最佳时机III4.买卖股票的最佳时机IV 1.最佳买卖股票时机含冷冻期 力扣链接&#xff1a;力扣 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的…

Delphi XE编写OCX控件

1、new->other 2、Active libary 3、再次New->Other,才出现ActiveX组件内容 设置类名及参数

在 Vue 3 中使用阿里巴巴矢量图标库

在项目中基本会用到图标&#xff0c;比较常见的就是阿里图标库。这篇文章主要介绍如何在vue3中使用图标库。 下载并全局注册自定义图标库 手动下载阿里巴巴矢量图标库的字体文件&#xff1a; 在阿里巴巴矢量图标库网站上选择您需要的图标&#xff0c;并将其添加到购物车。然后…

CMake之CPack

文章目录 一、CPack1.用CPack打包成为deb包2.如何确定的Depends依赖包?3.如何确定编译Build-Depends&#xff1f;4.Cpakc打包RPM包 二、deb的简单使用三、deb包相关文件说明1.control文件2.preinst文件3.postinst文件4.prerm文件5.postrm文件 一、CPack CPack 是 CMake 2.4.2…

SpringBoot 集成 EasyExcel 3.x 实现 Excel 导出

目录 EasyExcel官方文档 EasyExcel是什么&#xff1f; EasyExcel注解 springboot集成EasyExcel 简单入门导出 &#xff1a; 实体类 自定义转换类 测试一下 复杂表头一对多导出 &#xff1a; 自定义注解 定义实体类 自定义单元格合并策略 测试一下 EasyExcel官方文档 …

The Sandbox 展示泰国 2023 年元宇宙生态系统

The Sandbox 举办了 2023 年泰国合作伙伴日活动&#xff0c;宣布创建泰国元宇宙生态系统&#xff0c;并对泰国创客社区的巨大合作和发展表示认可。 The Sandbox 联合创始人兼首席运营官 Sebastien BORGET 说&#xff1a;“我们很高兴见证 The Sandbox 泰国生态系统的发展&#…

第七章 网络安全【计算机网络】

第七章 网络安全【计算机网络】 前言推荐第7章 网络安全7.1网络安全问题概述7.1.1计算机网络面临的安全性威胁7.1.2安全的计算机网络7.1.3数据加密模型 7.2两类密码体制7.2.1对称密钥密码体制7.2.2公钥密码体制 7.3鉴别7.3.1报文鉴别7.3.2实体鉴别 7.4密钥分配7.4.1 对称密钥的…

银行软开能干到退休吗?

大家好&#xff0c;我是熊哥。 21世纪了好像不躺平对不起自己&#xff1f;很多读者都关心哪些企业适合躺平&#xff0c;做程序员是不是在银行可以舒舒服服干一辈子&#xff1f;银行招软开&#xff08;软件开发&#xff09;有哪些要求&#xff1f; 现在就来详细讲一讲。 擦亮…

数据结构--二叉树的线索化

数据结构–二叉树的线索化 用土办法找到中序前驱 typedef struct BiTNode {ElemType data; //数据域struct BiTNode *lchild, *rchild; //左、右孩子指针struct BiTnode *parent; //父节点指针 }BiTNode, *BiTree;BiTNode *p; // p指向目标结点 BiTNode *pre NULL; //指向当前…

用Postman和jmeter做接口测试有什么区别吗?

目录 1.创建接口用例集&#xff08;没区别&#xff09; 2.步骤的实现&#xff08;有区别&#xff09; 3数据用例的实现 4断言的实现 5执行 6其他 总结&#xff1a; 1.创建接口用例集&#xff08;没区别&#xff09; Postman是Collections&#xff0c;Jmeter是线程组&am…

web安全php基础_php之string对象详解

PHP 字符串 字符串变量用于包含有字符的值。 在创建字符串之后&#xff0c;我们就可以对它进行操作了。您可以直接在函数中使用字符串&#xff0c;或者把它存储在变量中。 在下面的实例中&#xff0c;我们创建一个名为 txt 的字符串变量&#xff0c;并赋值为 “Hello world!…

MySQL数据库:数据库管理系统与安装MySQL数据库

目录 一、理论 1.数据库管理系统 2.关系型数据库 3.数据库 4.MySQL数据库 5.MySQL部署 二、实验 1.yum安装MySQL 2.配置MySQL数据库的Tab补全 三、问题 1.数据库登录报错 2.数据库密码复杂度报错 四、总结 一、理论 1.数据库管理系统 &#xff08;1&#xff09…

深入浅出fromCharCode和charCodeAt

先来看一个简单的输入输出 console.log(String.fromCharCode(30328)); //癸console.log(癸.charCodeAt()) //30328来回答一个问题&#xff0c;30328是什么&#xff1f; ascii? unicode? utf-8? utf-16? 来让我们看看fromCharCode 在MDN上面的解释 UTF-16代码单元序列…