IHS融合图片拉伸代码
时间: 2023-12-20 20:29:28 浏览: 80
根据提供的引用内容,没有找到关于IHS融合图片拉伸的具体代码。但是可以提供一些关于图像拉伸的代码供参考。
图像拉伸是一种常见的图像增强方法,可以通过调整图像的像素值范围来增强图像的对比度和亮度。以下是一些MATLAB代码示例,用于对图像进行线性拉伸:
```matlab
% 读取图像
img = imread('test.jpg');
% 获取图像的最小值和最大值
min_val = min(img(:));max_val = max(img(:));
% 线性拉伸
img_stretch = (double(img) - min_val) / (max_val - min_val) * 255;
img_stretch = uint8(img_stretch);
% 显示原图和拉伸后的图像
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(img_stretch);
title('Stretched Image');
```
以上代码将图像的像素值范围从[min_val, max_val]线性拉伸到[0, 255],并将结果显示在两个子图中。
相关问题
ihs图像融合python代码
以下是一个简单的图像融合的 Python 代码,使用了 OpenCV 库:
```python
import cv2
# 加载两张图像
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
# 将两张图像转换成灰度图像
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
# 计算两张灰度图像的差异
diff = cv2.absdiff(gray1, gray2)
# 将差异图像转换成二值图像
_, diff_thresh = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)
# 通过形态学操作去除噪声
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
diff_thresh = cv2.morphologyEx(diff_thresh, cv2.MORPH_OPEN, kernel)
# 将两张原始图像按一定比例进行融合
alpha = 0.5
beta = 1.0 - alpha
blended = cv2.addWeighted(img1, alpha, img2, beta, 0.0)
# 将融合后的图像与差异图像进行融合
result = cv2.bitwise_and(blended, blended, mask=diff_thresh)
# 显示结果图像
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
需要注意的是,这个代码只是一个简单的示例,实际情况中可能需要根据具体需求进行修改和优化。
IHS图像融合 python完整代码
以下是一个简单的基于Python的IHS图像融合的完整代码:
```python
import numpy as np
from skimage import io
import matplotlib.pyplot as plt
def rgb2hsi(rgb):
r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
hsi = np.zeros_like(rgb)
num = ((r-g)+(r-b))/2
den = np.sqrt((r-g)**2+(r-b)*(g-b))
theta = np.arccos(num/den)
h = np.zeros_like(r)
h[b>=g] = theta[b>=g]
h[b<g] = 2*np.pi - theta[b<g]
h[den==0] = 0
s = 1 - 3*np.minimum(np.minimum(r,g),b)/(r+g+b)
s[r+g+b==0] = 0
i = (r+g+b)/3
hsi[:,:,0], hsi[:,:,1], hsi[:,:,2] = h, s, i
return hsi
def hsi2rgb(hsi):
h, s, i = hsi[:,:,0], hsi[:,:,1], hsi[:,:,2]
r, g, b = np.zeros_like(h), np.zeros_like(h), np.zeros_like(h)
idx = (0<=h) & (h<2*np.pi/3)
b[idx] = i[idx]*(1-s[idx])
r[idx] = i[idx]*(1+s[idx]*np.cos(h[idx])/np.cos(np.pi/3-h[idx]))
g[idx] = 3*i[idx] - (r[idx]+b[idx])
idx = (2*np.pi/3<=h) & (h<4*np.pi/3)
h[idx] = h[idx] - 2*np.pi/3
r[idx] = i[idx]*(1-s[idx])
g[idx] = i[idx]*(1+s[idx]*np.cos(h[idx])/np.cos(np.pi/3-h[idx]))
b[idx] = 3*i[idx] - (r[idx]+g[idx])
idx = (4*np.pi/3<=h) & (h<=2*np.pi)
h[idx] = h[idx] - 4*np.pi/3
g[idx] = i[idx]*(1-s[idx])
b[idx] = i[idx]*(1+s[idx]*np.cos(h[idx])/np.cos(np.pi/3-h[idx]))
r[idx] = 3*i[idx] - (g[idx]+b[idx])
rgb = np.zeros_like(hsi)
rgb[:,:,0], rgb[:,:,1], rgb[:,:,2] = r, g, b
return rgb
def ihs_fusion(img1, img2, alpha):
hsi1 = rgb2hsi(img1)
hsi2 = rgb2hsi(img2)
hsi_fusion = np.zeros_like(hsi1)
hsi_fusion[:,:,0] = alpha*hsi1[:,:,0] + (1-alpha)*hsi2[:,:,0]
hsi_fusion[:,:,1] = alpha*hsi1[:,:,1] + (1-alpha)*hsi2[:,:,1]
hsi_fusion[:,:,2] = alpha*hsi1[:,:,2] + (1-alpha)*hsi2[:,:,2]
rgb_fusion = hsi2rgb(hsi_fusion)
return rgb_fusion
# 使用示例
img1 = io.imread('image1.jpg')
img2 = io.imread('image2.jpg')
fusion = ihs_fusion(img1, img2, 0.5)
plt.imshow(fusion)
plt.show()
```
其中,`rgb2hsi`函数将RGB图像转换为HSI图像,`hsi2rgb`函数将HSI图像转换为RGB图像,`ihs_fusion`函数实现了IHS图像融合算法,其中`img1`和`img2`分别为待融合的两幅RGB图像,`alpha`为融合权重。在使用示例中,我们将两幅图像的融合权重设为0.5。
阅读全文