python降低图像的灰度分辨率——冈萨雷斯数字图像处理

原理:

降低图像的灰度分辨率是指减少图像中不同灰度级别的数量,从而使图像看起来更加粗糙或简化。这可以通过减少灰度级别的数量或重新映射灰度级别来实现。以下是一些常见的降低图像灰度分辨率的原理和方法:

灰度量化(Gray Level Quantization):灰度量化是最常见的方法之一,它涉及将原始图像中的灰度级别映射到较少的离散值。例如,将256级灰度映射到16级灰度,每个新的灰度级别代表一定范围内的原始灰度级别。

直方图均衡化(Histogram Equalization):直方图均衡化是一种增强图像对比度的方法,但它也可以降低灰度分辨率。通过重新分布图像的灰度级别,可以使某些灰度级别合并在一起,从而减少分辨率。

阈值处理(Thresholding):阈值处理将图像的灰度级别分成两个或多个类别。图像中的像素要么属于一个类别,要么属于另一个类别,这会导致降低图像的分辨率。

颜色映射(Color Mapping):颜色映射是一种将灰度图像映射到伪彩色或其他颜色映射方案的方法。这可以减少图像的灰度分辨率,同时提供更多的视觉信息。

模糊(Blurring):模糊操作可以用来降低图像的灰度分辨率。通过应用一种模糊滤波器,图像中的细节会被混合在一起,导致降低分辨率。

像素化(Pixelation):像素化是一种通过合并相邻像素的方法来降低图像的灰度分辨率。这导致图像变得更加粗糙,丧失了细节。

降低图像的灰度分辨率可以用于多种用途,包括图像压缩、隐私保护、简化图像处理等。选择哪种方法取决于你的应用需求和图像处理的目标。无论哪种方法,都会在某种程度上损失图像的信息和质量,因此需要谨慎选择。

编写代码,输出如下图所示的结果:

用opencv读入原图后,以2的幂次(20-27)为量化间隔对原图的灰度量化8次。量化可以通过将原图的灰度值除以相应量化间隔并取整来实现。之后得到的图像可以通过下面的公式转换到0-255的灰度范围内以便于显示:

8次量化完成后,用pyplot同时显示所有结果图。

python 复制代码
import cv2
import math
import matplotlib.pyplot as plt
import numpy as np


img=cv2.imread("Fig0221.tif")
rows,cols,channels=img.shape

img_list=[]
img_name_list=[] 

for i in range(8):
    index=int(math.pow(2,i))
    img_new=np.floor(img/index)
    img_new=np.uint8(255*img_new/np.max(img_new))
    img_list.append(img_new)
    img_name_list.append("gray level="+str(int(256/index)))

_,axs=plt.subplots(2,4)
for i in range(2):
    for j in range(4):
        axs[i,j].imshow(img_list[i*4+j])
        axs[i,j].set_title(img_name_list[i*4+j])
        axs[i,j].axes.get_xaxis().set_visible(False)
        axs[i,j].axes.get_yaxis().set_visible(False)

plt.savefig("quantization.jpg")
plt.show()

结果展示

灰度分辨率

即灰度级,指的是用于量化灰度的比特数,通常用2的整数次幂来表示,最常用8bit,bit数的减小倾向于对比度增加

即 2^8 灰度范围[0~255]

用opencv读入原图后,以2的幂次(20-27)为量化间隔对原图的灰度量化8次。量化可以通过将原图的灰度值除以相应量化间隔并取整来实现。之后得到的图像可以通过下面的公式转换到0-255的灰度范围内以便于显示:

f_s=255×[f_m/max(f_m)]

8次量化完成后,用pyplot同时显示所有结果图

相关推荐
冷雨夜中漫步2 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴2 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再2 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
m0_736919104 小时前
C++代码风格检查工具
开发语言·c++·算法
喵手4 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934734 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy4 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
黎雁·泠崖5 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_763472465 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
肖永威6 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos