Data Standardization——遥感影像Histogram matching及python实现

直方图匹配用于图像的规范化表示,它可以用于特征匹配,特别是当图像来自不同的来源或在不同的条件下(根据光线等)。每个图像有多个通道,每个通道单独匹配。直方图匹配只有在输入图像和参考图像的通道数匹配时才可行。

直方图匹配的主要目标是:

  1. 对于每个图像,我们需要创建直方图。
  2. 看一下参考图像的直方图。
  3. 使用参考直方图,更新输入图像中的像素强度值,使它们匹配。
from skimage import exposure
from skimage.exposure import match_histograms
import cv2  
# reading main image
img1 = cv2.imread('原图像路径')
# checking the number of channels
print('No of Channel is: ' + str(img1.ndim)) 
# reading reference image
img2 = cv2.imread('参考图像路径')  
# checking the number of channels
print('No of Channel is: ' + str(img2.ndim))
image = img1
reference = img2  
matched = match_histograms(image, reference, multichannel=True)
cv2.imwrite('保存路径', matched)

我拿一张遥感影像做了实验,第一幅是需要直方图匹配的影像,第二幅是参考影像,第三张幅是匹配后影像
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
本程序主要对遥感图像实现三种处理:几何校正、图像增强和图像配准。这三种处理都可以独立实现,然而对于原始的遥感图像将这三种处理依次进行效果更佳。 具体操作步骤如下: 1.在主窗口打开图像1 2.选择【几何校正】菜单,打开【图像几何校正】对话框进行几何校正。在此对话框中,首先打开待校正图像2,然后点击【选取特正点】按钮,按照提示依次在待校正图像和基准图像中手动选取特征点,最后点击【校正图像】得到几何校正结果,如果达到预期效果,则点击【保存并在主窗口打开】按钮,保存此校正图片,并在主窗口打开。 3.选择【图像增强】菜单,打开【图像增强】对话框进行图像增强。在此对话框中,首先在相应的处理类别(如:直方图增强、灰度增强等)中选择具体方法(如:均衡化、规定化等),然后点击本类别的按钮。增强后的结果会在右侧显示,如果达到预期效果,则点击【保存并在主窗口打开】按钮,保存此增强后的图片,并在主窗口打开。 4.选择【图像配准】菜单,打开【图像配准】对话框进行图像配准。在此对话框中,首先打开待匹配图像3,然后选择“半自动”或“手动”方法并点击【选取特正点】按钮,按照提示依次在待配准图像和基准图像中半自动或手动选取特征点(如果在半自动选取中特征点对应错误,可以更改特征点),最后点击【匹配图像】得到图像配准结果,如果达到预期效果,则点击【保存并在主窗口打开】按钮,保存此校正图片,并在主窗口打开。
极差法数据标准化是数据预处理中的一种方法,其目的是将数据按照一定比例缩放到指定区间内。具体实现可以参考以下代码: ```python import numpy as np def range_standardization(data, a, b): # data: 待处理数据,一维或二维数组 # a,b: 目标区间,一般为 [0,1] 或 [-1,1] max_val = np.max(data, axis=0) min_val = np.min(data, axis=0) return (data - min_val) * (b - a) / (max_val - min_val) + a ``` 其中,`data` 是待处理数据,可以是一维或二维数组;`a` 和 `b` 是目标区间,一般为 `[0,1]` 或 `[-1,1]`。该函数内部先使用 `np.max` 和 `np.min` 函数计算数据的最大值和最小值,然后根据极差公式将数据缩放到目标区间内。 例如,对于一个一维数组 `[1, 2, 3, 4, 5]`,我们可以使用以下代码进行标准化: ```python data = np.array([1, 2, 3, 4, 5]) standard_data = range_standardization(data, 0, 1) print(standard_data) # 输出 [0. 0.25 0.5 0.75 1. ] ``` 对于多维数组,同样可以使用该函数进行标准化。例如,对于一个二维数组 `[[1, 2], [3, 4], [5, 6]]`,我们可以使用以下代码进行标准化: ```python data = np.array([[1, 2], [3, 4], [5, 6]]) standard_data = range_standardization(data, -1, 1) print(standard_data) # 输出 [[-1. -1. ] # [ 0. 0.33333333] # [ 1. 1. ]] ``` 注意,该函数假设所有特征都具有相同的重要性,因此不适用于带有权重的数据标准化。在实际应用中,需要根据数据的特点选择合适的标准化方法。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拖延癌晚期患者7777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值