实验报告:图像直方图与频域变换

一、实验目的:


1.掌握图像灰度变换原理。
2.理解图像直方图均衡化算法。
3.了解图像频域变换,并会观察频谱图。

二、实验环境

  • Python 3.x

  • OpenCV

  • NumPy

  • Matplotlib

三、实验内容与步骤

1. 读取并显示原始图像

使用OpenCV读取图像,并将其转换为灰度图像以便后续处理。

original_image_bgr = cv2.imread('your_image.jpg')
gray_image = cv2.cvtColor(original_image_bgr, cv2.COLOR_BGR2GRAY)

2. 显示灰度图像的直方图

使用Matplotlib绘制灰度图像的直方图,观察像素分布情况。

show_histograms([gray_image], ['Histogram of Grayscale Image'])

3. 图像灰度变换(点运算)

a. 亮度提升
bright_image = cv2.add(gray_image, 50)
b. 对比度增强
contrast_image = cv2.multiply(gray_image.astype(np.float32), 1.5).clip(0, 255).astype(np.uint8)
c. 伽马变换
gamma = 1.8
gamma_lut = np.array([((i / 255.0) ** (1.0 / gamma)) * 255 for i in range(256)]).astype("uint8")
gamma_corrected_image = cv2.LUT(gray_image, gamma_lut)

4. 图像代数运算

创建圆形掩膜,并进行加法、减法、与运算:

mask = np.zeros_like(gray_image)
cv2.circle(mask, center, radius, 255, -1)

added_image = cv2.add(gray_image, mask)
occluded_image = gray_image.copy()
occluded_image[mask == 255] = 0
roi_image = cv2.bitwise_and(gray_image, mask)

5. 直方图均衡化

对灰度图像进行直方图均衡化:

equalized_image = cv2.equalizeHist(gray_image)

6. 图像频域变换(傅里叶变换)

a. 傅里叶变换与频谱显示
dft = cv2.dft(np.float32(padded), flags=cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)
magnitude_spectrum = 20 * np.log(cv2.magnitude(dft_shift[:,:,0], dft_shift[:,:,1]) + 1)
b. 低通滤波与图像重建
mask_lp = np.zeros((nrows, ncols, 2), np.uint8)
cv2.circle(mask_lp, (ccol, crow), 50, (1,1), -1)
fshift_lp = dft_shift * mask_lp
img_back_lp = cv2.idft(np.fft.ifftshift(fshift_lp))

四、结果分析

  1. 灰度变换:亮度提升使图像整体变亮;对比度增强使明暗对比更明显;伽马变换可调整图像的整体明暗分布。

  2. 代数运算:加法可用于图像叠加;减法模拟遮挡效果;与运算用于提取感兴趣区域。

  3. 直方图均衡化:均衡化后图像对比度增强,直方图分布更均匀。

  4. 频域变换:傅里叶变换将图像从空间域转换到频率域,低通滤波可去除高频噪声,实现图像平滑。

五、实验总结

通过本次实验,我掌握了以下内容:

  • 图像灰度变换的基本方法及其效果;

  • 图像代数运算的实现与应用;

  • 直方图均衡化的原理与操作;

  • 傅里叶变换在图像处理中的应用;

  • 使用Python和OpenCV进行图像处理的基本流程。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值