torch平台上利用K-means方法实现SAR图像变化检测

本文介绍了使用K-means聚类算法进行SAR图像变化检测的过程,包括对数比值图像的计算和聚类操作,最终获得初步变化检测结果。通过代码实现展示了图像处理和聚类的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 SAR图像变化检测步骤 :
  首先获取原始SAR图像的对数比值图像,再利用kmeans方法对比值图像的像素值进行聚类,聚成2类,由此得到粗略的变化检测结果.

2 K-means聚类算法
K-means算法是聚类算法中最简单的一种。聚类指的就是将一堆具有类似特征的无标签点归位一类,比如黑种人和黄种人由于身高、体型、肤色、毛发各个特征上的不同(单纯肤色说服力不够)而聚类为两个簇。K-means算法通过迭代优化将样本聚类成k个簇。
算法流程:
(1)、任取k个质心;
(2)、求出每个样本到每个质心的距离,并将其归至距离最近的簇;
(3)、根据上一步归类的样本,重新计算质心(各项特征的平均值);
(4)、迭代2、3直至质心不再变化.

3  代码
(1) lograte.lua

print('===>计算对数比值图像:')
im1=image.load('1999.04.png')   --读取图片
im2=image.load('1999.05.png')   --读取图片
im1:mul(255)
im2:mul(255)
a1 = im1[{{1},{},{}}]
a2 = im2[{{1},{},{}}]
aa1 = a1[1]
aa2 = a2[1]
dim = aa1
-----------------------------------------------------------
dd = {}
for i = 1,301 do
    dd[i] = {}
    for j = 1,301 do
        dd[i][j] = aa1[i][j]/aa2[i][j]      
    end
end
-----------------------------------------------------------
for i = 1,301 do
    for j = 1,301 do
        dim[i][j] = dd[i][j]        
    end
end
dim:log()
dim:abs()
image.save('lograte.png',dim)   -- 存储图像 
-----------------------------------------------------------
print('             对数比值图像:')
dim1=image.load('lograte.png')
itorch.image(dim1)

(2) kmeans_chde.lua

im = image.load('lograte.png')
itorch.image(im)
ima = im[1]
N  = ima:size()
print(N)
nkernels = 1
niter = 1

I = im:view(-1,1)  --转化为列向量
--转化为列向量也可以用这个函数==> I = im:reshape(N[1]*N[2])

centroids,count = unsup.kmeans(I, nkernels, niter, nil, nil, true)   
--利用kmeans函数进行聚类
--centroids为聚类中心
print(#centroids)
print(count)
----------------------------------------
for i = 1,301 do
    for j = 1,301 do
        if ima[i][j]>centroids[1][1] then
                ima[i][j] = 1
        else    ima[i][j] = 0
        end
    end
end
image.save('final_image.png',ima) 
----------------------------------------
dim1=image.load('final_image.png')
print('         kmeans法后得到的结果图:')
itorch.image(dim1)

(3) main.lua

require 'torch'
require 'image'
require 'unsup'
dofile 'lograte.lua'
dofile 'kmeans_chde.lua'

4 结果
      对数比值图像:
对数比值图像
    kmeans法后得到的结果图:
粗略变化检测结果

总结
  上述结果十分粗糙,主要原因是没有进行滤波,后续工作会加上滤波过程.
  
参考资料
http://blog.csdn.net/zhanghe2775115/article/details/49560625

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值