用python写一个直方图均衡化后 高斯滤波,并恢复图片颜色,将原始图片与处理后的图片在一张图中进行对比显示
时间: 2024-05-08 09:19:27 浏览: 130
好的,这是一个计算机视觉问题,先进行直方图均衡化处理,然后再进行高斯滤波处理,最后使用颜色转换函数进行颜色恢复。你可以使用以下Python代码实现:
```python
import cv2
# 读入原始图片
image = cv2.imread('path/to/image.jpg')
# 对图像进行直方图均衡化处理
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image = cv2.equalizeHist(image)
# 对图像进行高斯滤波处理
image = cv2.GaussianBlur(image, (5, 5), 0)
# 进行颜色恢复
image = cv2.cvtColor(image, cv2.COLOR_GRAY2RGB)
# 将原始图片与处理后的图片对比显示
compare_image = cv2.hconcat([cv2.cvtColor(cv2.imread('path/to/image.jpg'), cv2.COLOR_BGR2RGB), image])
cv2.imshow('Original vs Processed', compare_image)
cv2.waitKey(0)
```
希望这个代码可以帮助到你,有什么问题可以继续问我哦~
相关问题
对图像第三层低频小波系数进行直方图均衡化对高频系数进行高斯滤波的代码
以下是对图像第三层低频小波系数进行直方图均衡化,高频系数进行高斯滤波的 Python 代码:
```python
import cv2
import numpy as np
# 读取图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 计算小波系数
coefficients = pywt.wavedec2(image, 'haar', level=3)
# 对第三层低频系数进行直方图均衡化
coefficients[0] = cv2.equalizeHist(np.uint8(coefficients[0]))
# 对高频系数进行高斯滤波
for i in range(1, len(coefficients)):
for j in range(len(coefficients[i])):
coefficients[i][j] = cv2.GaussianBlur(coefficients[i][j], (3, 3), 0)
# 重构图像
image = pywt.waverec2(coefficients, 'haar')
# 显示图像
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`pywt` 是 Python 的小波库,需要先用 `pip` 安装。`level=3` 表示对图像进行三层小波变换,第一层得到的是 LL、LH、HL、HH 四个子带,第二层得到的是 LL2、LH2、HL2、HH2 四个子带,第三层得到的是 LL3、LH3、HL3、HH3 四个子带。直方图均衡化和高斯滤波通过对各自的系数进行操作来实现。最后,用 `pywt.waverec2` 函数将处理后的小波系数重构成图像。
1. 给标定板图像增加椒盐噪声; 2. 比较直方图均衡、均值滤波、中值滤波、高斯滤波等Halcon算子; 3. 找出滤波后标定板图像中的实心圆,统计实心圆个数;
1. **添加椒盐噪声到标定板图像**:在Halcon中,你可以使用`AddSaltAndPepperNoise`函数来模拟椒盐噪声。你需要提供原始图像、噪声级别(0-1之间的浮点数,越高噪声越明显)、以及随机种子来保证每次运行的结果一致。代码示例:
```python
image = LoadImage("calibration_board.jpg") # 加载原图
noisy_image = AddSaltAndPepperNoise(image, noise_level=0.1, seed=1) # 添加噪声
SaveImage(noisy_image, "noisy_calibration_board.jpg") # 保存处理后的图像
```
2. **比较Halcon算子**:
- **直方图均衡化**(Histogram Equalization)增强图像对比度,适合于低对比度场景,但可能导致边缘锐利度过高。
- **均值滤波**(Mean Filter)平滑图像,适合去除低频噪声,但可能会模糊细节。
- **中值滤波**(Median Filter)抗噪能力强,能较好地保留边缘,特别适合椒盐噪声。
- **高斯滤波**(Gaussian Filter)更适合去除高频噪声,同时保持图像纹理,但处理速度相对较慢。
3. **寻找并统计实心圆**:
- 先对上述任一滤波后的图像进行边缘检测(比如`FindEdges`)。
- 然后使用`FindCircles`查找圆形区域,设置适当的参数如最小/最大半径。
```python
edges = FindEdges(noisy_image)
circles = FindCircles(edges, min_radius, max_radius)
circle_count = len(circles)
```
最后统计得到的`circle_count`就是实心圆的个数。
阅读全文