数字图像处理之采样和量化
来源:互联网 发布:网络监控的组成 编辑:程序博客网 时间:2024/06/16 09:16
和上文说的一样,使用Python实现。
采样和量化我就不多做叙述了,下面我就讲讲如何实现采样和量化。
对于采样,就是图像中一块区域的像素点取样为一个像素块。而对于这个像素块的(R,G,B)值,通常是取这个像素块中所有像素点的平均值来得到的,而为了方便实现,我使用了这个像素块左上角的那个点作为这个像素块的(R,G,B)值。
采样:
#采样def sampling(): global samplingImage x = int(samplingText.get()) h,w = greyyedImage.size samplingImage = Image.new('L',(h,w)) opix = greyyedImage.load() npix = samplingImage.load() for i in range (h): for j in range (w): npix[i,j] = opix[i - i % x,j - j % x] showPicture(samplingImage , newCanvas) histogram(samplingImage , newHisCanvas)
量化:
#量化 def quantization(): global quantizationImage m = int(quantizationText.get()) h,w = samplingImage.size quantizationImage = Image.new('L' , (h , w)) opix = samplingImage.load() npix = quantizationImage.load() for i in range (h): for j in range (w): npix[i,j] = int((opix[i, j] * m / 256) * 256 / (m - 1)) showPicture(quantizationImage , newCanvas) histogram(quantizationImage , newHisCanvas)
其实采样的X和量化的M表示以x * x或m * m的像素点作为像素块,就是采样和量化间隔。又由于我的UI关系可能不能直接使用代码,但是对于采样和量化间隔这个输入,我建议大家别和我一样图方便做个输入框而且还没有做异常处理,做成一个滚动条就挺好了。
以下是效果图:
原图:
采样间隔比较小的图:
采样间隔适中的图:
采样间隔较大的图:
量化都是基于第一章采样图做的
量化间隔比较小的图:
量化间隔适中的图:
量化间隔较大的图:
owari
- 数字图像处理之采样和量化
- 数字图像处理—采样和量化
- 【数字图像处理】三.MFC实现图像灰度、采样和量化功能详解
- 语音采样和量化
- 信号的采样和量化
- 图像的采样和量化
- 数字图像和数字图像处理
- 图像处理中的采样与量化
- OpenCV数字图像处理八:图像降采样
- Matlab数字图像处理基础:图像采样
- 图像采样和量化的含义
- 语音信号的采样和量化
- 数字图像处理之数字图像基础
- 数字图像处理之概述
- Coding:简单介绍视音频采样和量化01.
- Visual C++数字图像处理基础 之 BitBlt和StretchBlt
- 系统学习数字图像处理之灰度变换和空域滤波
- 数字图像处理之椒盐噪声和中值滤波
- HBase 索引创建
- python 中的迭代 for zip 字典
- ASP.Net 如何让后台的cs页面获取到前台的html控件的值
- STL系列之五 priority_queue 优先级队列
- 章子怡拿金马影后?
- 数字图像处理之采样和量化
- Oracle中to_number()函数的用法
- TCP三次握手及四次挥手详细图解
- 【多维分析系列】代码与未来
- DB2表空间和模式的潜理解
- NOSQL schema创建原则
- 为什么用spring来管理hibernate
- NYOJ 933 Bob's Print Service
- POJ2140