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

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.hqwc.cn/news/17491.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低代码——现代数字化人才培养的创新引擎

如今&#xff0c;随着数字时代的蓬勃发展&#xff0c;催生了各行各业数字化转型的浪潮。如果说技术是衍生数字时代的基石&#xff0c;那数字化人才一定是这场浪潮中不可或缺的推动力量。 随着新兴技术的不断创新和应用&#xff0c;全行业对于复合型、创新型的优秀数字化人才需…

stm32usart+中断接收定长数据

文章目录 前言一、cubemx的配置二、代码编写1.主函数在这里插入图片描述2. it.c 总结 前言 中断接收固定的数据值。 一、cubemx的配置 开启USART1 打开NVIC中断 二、代码编写 1.主函数 #define RxBuf_SIZE_1 50 //USART1接收缓冲区大小 #define MainBuf_SIZE_1 50 //USAR…

软件工程——第11章面向对象设计知识点整理

本专栏是博主个人笔记&#xff0c;主要目的是利用碎片化的时间来记忆软工知识点&#xff0c;特此声明&#xff01; 文章目录 1.什么是面向对象设计&#xff08;OOD&#xff09;&#xff1f; 2.优秀设计的主要特点是&#xff1f; 3.面向对象设计应遵循的准则有哪些&#xff1f…

开悟AIArena,深度学习神经网络,暑假开悟比赛的学习

目录 1.赛题简介 1.1.赛题目标 1.2.地图介绍 1.3.规则介绍 2.环境介绍 2.1.观测空间&#xff08;Observation Space&#xff09; 2.1.1.原始数据&#xff1a; 2.1.2.特征数据 2.1.3.特征提取 2.2.动作空间&#xff08;Action Space&#xff09; 2.3.坐标介绍&#xf…

Linux 创建文件的12种方法总结

在Linux中&#xff0c;可以使用多种方法来创建文件。以下是一些常见的方法&#xff1a; 1. touch命令 touch filename&#xff0c;用于创建一个空文件。如果文件已存在&#xff0c;则只更新其访问时间和修改时间。 touch 命令通常用于将文件的访问和修改时间更新为当前时间。…

【监控系统】Prometheus架构相关概念及源码部署实战

上篇我们介绍了业界主流监控框架的对比&#xff0c;我们监控系统这块主要是采用Prometheus。 那么&#xff0c;什么是Prometheus 官网&#xff1a;https://prometheus.io/docs/introduction/overview/ Prometheus是一个开源的系统监控和报警系统&#xff0c;现在已经加入到CN…

Excel二级联动下拉列表(横向字典配置)

二级联动下拉列表 1. Excel内新建sheet用来存放二级联动列表 2. 新建省份名称引用 在省市字典下&#xff0c;单击A1单元格&#xff0c;选择公式->名称管理器->新建&#xff0c;名称为省份&#xff0c;引用位置为OFFSET(省市字典!$A$1,0,0,COUNTA(省市字典!$A:$A))&…

字符函数和字符串函数的模拟实现

求字符串长度 strlen 长度不受限制的字符串函数 strcpystrcmpstrcat长度受限制的字符串函数 strnlenstrncmpstrncpystrncat字符串查找 strstrstrtok错误信息报告 strerror内存操作函数 memcpymemmovememsetmemcmp 首先我们来看strlen字符串是以‘\0’为结束标志&#xff0c;str…

【网络原理】IP协议

&#x1f94a;作者&#xff1a;一只爱打拳的程序猿&#xff0c;Java领域新星创作者&#xff0c;CSDN、阿里云社区优质创作者。 &#x1f93c;专栏收录于&#xff1a;计算机网络原理 本博文讲解网络层重点协议之IP协议&#xff0c;主要讲解IP地址的组成、IP地址的分类、IP地址的…

day4 qtqtqtc++

cppcpp ui代码 <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Widget</class><widget class"QWidget" name"Widget"><property name"geometry"><rec…

2023年,测试工程师最关心的几个问题内容:

2023年&#xff0c;测试工程师最关心的几个问题内容&#xff1a; 1. 自动化测试是否会取代手动测试&#xff1f;&#x1f916; 自动化测试和手动测试都在软件开发过程中扮演着重要的角色。虽然自动化测试在某些方面可以提供更高效和一致的测试覆盖&#xff0c;但它无法完全取…

第二次CCF计算机软件能力认证

第一题&#xff1a;相邻数对 给定 n 个不同的整数&#xff0c;问这些数中有多少对整数&#xff0c;它们的值正好相差 1。 输出格式 输入的第一行包含一个整数 n&#xff0c;表示给定整数的个数。 第二行包含所给定的 n 个整数。 输出格式 输出一个整数&#xff0c;表示值正好相…