数字图像处理python课设
时间: 2023-11-22 22:50:32 浏览: 127
本次数字图像处理python课设的目的是利用图像处理技术,基于数字化存储的玻璃底板图像自动生成尽量非虚化的彩色图像。具体步骤如下:
1.读取原始图像文件并转换为8位无符号整数格式,如果是tif格式则需要转换为8位无符号整数格式。
2.将图像转换为灰度图像。
3.利用高斯金字塔对原始灰度图像进行降采样,得到一系列不同分辨率的图像。
4.对每个分辨率的图像进行拉普拉斯金字塔处理,得到一系列不同分辨率的拉普拉斯图像。
5.将每个分辨率的拉普拉斯图像与上一级分辨率的高斯图像相加,得到一系列不同分辨率的重建图像。
6.将重建图像叠加在一起,得到最终的彩色图像。
7.将彩色图像保存到本地。
关键代码如下:
```python
import cv2 as cv
import numpy as np
import skimage.util
from matplotlib import pyplot as plt
# 读取原始图像文件并转换为8位无符号整数格式
pic_name = '../turkmen.tif' #图片名
im = cv.imread(pic_name)
if '.tif' in pic_name:
im=skimage.util.img_as_ubyte(im)
# 将图像转换为灰度图像
im = cv.cvtColor(im,cv.COLOR_BGR2GRAY)
# 利用高斯金字塔对原始灰度图像进行降采样,得到一系列不同分辨率的图像
G = im.copy()
gpA = [G]
for i in range(6):
G = cv.pyrDown(G)
gpA.append(G)
# 对每个分辨率的图像进行拉普拉斯金字塔处理,得到一系列不同分辨率的拉普拉斯图像
lpA = [gpA[5]]
for i in range(5,0,-1):
GE = cv.pyrUp(gpA[i])
L = cv.subtract(gpA[i-1],GE)
lpA.append(L)
# 将每个分辨率的拉普拉斯图像与上一级分辨率的高斯图像相加,得到一系列不同分辨率的重建图像
LS = lpA[0]
for i in range(1,6):
size = (lpA[i].shape[1], lpA[i].shape[0])
LS = cv.pyrUp(LS, dstsize = size)
LS = cv.add(LS, lpA[i])
# 将重建图像叠加在一起,得到最终的彩色图像
im_color = cv.cvtColor(im_old,cv.COLOR_GRAY2BGR)
im_color = im_color.astype(np.int16)
im_color += LS
im_color = np.clip(im_color, 0, 255)
im_color = im_color.astype(np.uint8)
# 将彩色图像保存到本地
cv.imwrite('result.jpg', im_color)
# 显示结果
plt.imshow(im_color)
plt.show()
```
阅读全文