局部直方图均衡化未调用封装函数代码
时间: 2024-01-01 19:05:58 浏览: 30
以下是Python代码实现局部直方图均衡化的过程,其中未调用封装函数:
```python
import cv2
# 定义局部直方图均衡化函数
def adaptive_histogram_equalization(img, clip_limit=2.0, tile_size=(8, 8)):
h, w = img.shape[:2]
y, x = tile_size
assert (h % y) == 0 and (w % x) == 0, "Invalid tile size"
dy, dx = h // y, w // x
clahe = cv2.createCLAHE(clipLimit=clip_limit)
result = img.copy()
for i in range(dy):
for j in range(dx):
tile = img[i * y:(i + 1) * y, j * x:(j + 1) * x]
result[i * y:(i + 1) * y, j * x:(j + 1) * x] = clahe.apply(tile)
return result
# 读取图片
img = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
# 调用局部直方图均衡化函数
result = adaptive_histogram_equalization(img, clip_limit=2.0, tile_size=(8, 8))
# 显示结果
cv2.imshow("Original Image", img)
cv2.imshow("Adaptive Histogram Equalization", result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,我们首先定义了一个局部直方图均衡化函数 `adaptive_histogram_equalization`,该函数接受三个参数:
- `img`:需要进行局部直方图均衡化的图片。
- `clip_limit`:用于控制直方图均衡化后像素值的范围,范围为 [1, 40],默认值为 2.0。
- `tile_size`:用于划分图片的块大小,该值应该能够整除图片的宽和高,常见值为 (8, 8)、(16, 16) 等。
然后我们读取了一张灰度图,并调用 `adaptive_histogram_equalization` 函数对其进行局部直方图均衡化,最后将结果显示出来。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)