2017-12-22 11:11:47 zqhwando 阅读数 8274
  • 量化分析师的Python日记

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 量化分析师的Python学习教程,课程先从介绍Python本身一些基本语法,再介绍 python 相关应用及在数据分析及处理领域几大利器:pandas、scipy、numpy、sklearn、matplotlb。

    9855 人正在学习 去看看 CSDN讲师

因为自己是一枚图像处理领域的研究生菜鸟,即将从事的方向是图像处理下的图像融合方向,故,把我自己学习中遇到的不太明白的知识列下来,留作纪念,加深印象与理解。
从广义上说,图像是自然界景物的客观反映。以照片形式或视频记录介质保存的图像是连续的,计算机无法接收和
处理这种空间分布和亮度取值均连续分布的图像。图像数字化就是将连续图像离散化,其工作包括两个方面:
取样和量化。
那么,究竟什么是采样,什么又是量化呢?
所谓采样,就是把一幅连续图像在空间上分割成M×N个网格,每个网格用一亮度值来表示。一个网格称为一个像素。M×N的取值满足采样定理。
采样示意图
而量化就是把采样点上对应的亮度连续变化区间转换为单个特定数码的过程。量化后,图像就被表示成一个整数矩阵。每个像素具有两个属性:位置和灰度。位置由行、列表示。灰度表示该像素位置上亮暗程度的整数。此数字矩阵M×N就作为计算机处理的对象了。灰度级一般为0-255(8bit量化)。
量化示意图(a)为量化过程(b)为量化为8bit
在现实生活中,采集到的图像都需要经过离散化变成数字图像后才能被计算机识别和处理。
二维图像的成像过程
采样又可分为均匀采样和非均匀采样。
图像均匀采样量化——像素灰度值在黑白范围较均匀分布的图像。
图像非均匀采样量化——对图像中像素灰度值频繁出现的灰度值范围,量化间隔取小一些,而对那些像素灰度值极少出现的范围,则量化间隔取大一些。
不同分辨率下图像的显示情况
通过自己查资料整理,终于对图像的采样与量化过程有了最基本的了解,不像刚开始写之前,懵懵懂懂的,就感觉听了好多遍这两个词,但就是不知道他两是干啥用的。谨以此文,纪念之。

2017-02-27 18:07:30 heda_zjs 阅读数 12901
  • 量化分析师的Python日记

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 量化分析师的Python学习教程,课程先从介绍Python本身一些基本语法,再介绍 python 相关应用及在数据分析及处理领域几大利器:pandas、scipy、numpy、sklearn、matplotlb。

    9855 人正在学习 去看看 CSDN讲师


用MATLAB对图像进行量化处理

一、实验目的:掌握量化原理

二、实验内容:试对lenagray.jpg图像分别量化为64级灰度图像、32级灰度图像、8级灰度图像和4级灰度图像,观察图像质量的变化



第一幅图是原图,第二幅图是不同量化程度对应的图像

代码如下:

%将界面上的内容全部清空
clc;
clear;
close all;
I=imread('D:/Mypicture/lenagray.jpg');
I64=histeq(I,64);%将图像的灰度级数改为64
I32=histeq(I,32);%将图像的灰度级数改为32
I16=histeq(I,16);%将图像的灰度级数改为16
I8=histeq(I,8);%将图像的灰度级数改为8
I4=histeq(I,4);%将图像的灰度级数改为4
I2=histeq(I,2);%将图像的灰度级数改为2
figure;
subplot(2,3,1),imshow(I64),title('64x64');
subplot(2,3,2),imshow(I32),title('32x32');
subplot(2,3,3),imshow(I16),title('16x16');
subplot(2,3,4),imshow(I8),title('8x8');
subplot(2,3,5),imshow(I4),title('4x4');
subplot(2,3,6),imshow(I4),title('2x2');


2019-12-11 21:12:08 weixin_44225182 阅读数 82
  • 量化分析师的Python日记

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 量化分析师的Python学习教程,课程先从介绍Python本身一些基本语法,再介绍 python 相关应用及在数据分析及处理领域几大利器:pandas、scipy、numpy、sklearn、matplotlb。

    9855 人正在学习 去看看 CSDN讲师

实验题目

    1.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的采样。
    2.对于给定图片,在MATLAB软件下编程实现对图片的不同程度的量化。

实验原理

1.采样
    我们获取到的图像一般为模拟图像,要让计算机进行处理需将其数字化,采样的作用就是将模拟图像转变为数字图像。一般来说,采样间隔越大,所得图像像素数越少,空间分辨率越低,质量差,严重时出现马赛克效应;采样间隔越小,所得图像像素数越多,空间分辨率越高,图像质量好,但数据量大。
2.量化
    计算机软件得到了一个样本点(图片)的数据,然后它要用多少个二进制位去表示它(重现图片),如下图
在这里插入图片描述
根据上图,可以知道图像有一个灰度的概念
1bit 只有 2 个灰度级,0 和 1
2bit 有 4 个灰度级,0, 1, 2, 3
8bit 有 256 个灰度级,0 到 255

实验代码

1.采样

t=imread('t1.jpg')
t1=rgb2gray(t)
imshow(t1),title('原图') %原图像 需要将其先转换为灰度图像
t2=t1(1:2:end,1:2:end)
t3=t1(1:4:end,1:4:end)
t4=t1(1:8:end,1:8:end)
t5=t1(1:16:end,1:16:end)
figure,subplot(2,2,1),imshow(t2),title('1:2采样')
subplot(2,2,2),imshow(t3),title('1:4采样')
subplot(2,2,3),imshow(t4),title('1:8采样')
subplot(2,2,4),imshow(t5),title('1:16采样')

2.量化

t=imread('t1.jpg');
r=imread('t1.png');
t1=rgb2gray(t);
r1=rgb2gray(r);
t2=histeq(t1,64);
t3=histeq(t1,32);
t4=histeq(t1,16);
t5=histeq(t1,2);
r2=histeq(r1,64);
r3=histeq(r1,32);
r4=histeq(r1,16);
r5=histeq(r1,2);
imshow(t1);
figure,subplot(2,2,1),imshow(t2),title('量化 64')
subplot(2,2,2),imshow(t3),title('量化 32')
subplot(2,2,3),imshow(t4),title('量化 16')
subplot(2,2,4),imshow(t5),title('量化 2')
figure,imshow(r1)
figure,subplot(2,2,1),imshow(r2),title('量化 64')
subplot(2,2,2),imshow(r3),title('量化 32')
subplot(2,2,3),imshow(r4),title('量化 16')
subplot(2,2,4),imshow(r5),title('量化 2')

实验结果图

原图
在这里插入图片描述
采样对比图
在这里插入图片描述
采样分析:
    对于同样一副图像,不同的采样比例,所得的结果图是不一样的。拿采样比例1:2来说,意思是:对于原图像,每个2个像素点进行采样,采样图像与原图像差别不大。当采样比例为1:4和1:8时,采样所得的图像开始出现模糊。当采样比例达到1:16时,图像已经完全模糊掉了。这是因为对于原图像,1:16的比例只能获得原图像很少的特征点,很多像素点都被丢失了,所以看起来模糊。

原图
在这里插入图片描述
量化对比图
在这里插入图片描述
量化分析:
    其实量化的本质就是对0~255个灰度级进行分级,每个级用一个灰度值来表示。级数越多,其越接近原图像。当级数只有2时,会被分成0和255,也就是我们所说的黑白图像了。

更多

获取更多资料、代码,微信公众号:海轰Pro
回复 海轰 即可

2014-12-10 21:41:57 u011899604 阅读数 471
  • 量化分析师的Python日记

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 量化分析师的Python学习教程,课程先从介绍Python本身一些基本语法,再介绍 python 相关应用及在数据分析及处理领域几大利器:pandas、scipy、numpy、sklearn、matplotlb。

    9855 人正在学习 去看看 CSDN讲师

这次的内容很简单啦,是量化,反正学过数字图像处理的都应该知道这些都是必做的,本来一张灰度图像的灰度级是256,我们现在把灰度级设的更低,然后看图片的效果,还是跟以前一样,先看效果。

当然和以前一样,还是baby的图片。右边为量化为8个灰度级的效果。

当然,首先还是添加按钮:

这个过程很简单,不会的朋友看我前面的博客就应该很清楚了。

然后为这几个按钮添加事件响应函数,也和前面的过程一样,我就不再多说了。那么,主要的我就来说一下量化的过程吧。

举个例子,如果需要的灰度级是4的话,那么自然的想到为0,1,2,3,我的算法是原先的灰度级/3,然后得到原来的灰度级相对应的,比如1对应的为85,那么在(85-85/2,85+85/2]的区间,灰度级都应该是1,所以我以这个为例,贴出下列代码:

void ChangeColor::Quantization_4()
{
	int i, j;

	int nRowBytes = GetPitch();//图像每一行的字节数,注意这个值一般是负数
	int nWidth = GetWidth();
	int nHeight = GetHeight();

	int nClrs = GetBPP() / 8;
	LPBYTE p = (LPBYTE)GetBits();


	for (i = 0; i < nHeight; i++) //第i行
	{
		for (j = 0; j < nWidth; j++) //第j列
		{


			p[i*nRowBytes + j*nClrs + 0] = (int)((double)p[i*nRowBytes + j*nClrs + 0] / 85.0 + 0.5) * 85;
			p[i*nRowBytes + j*nClrs + 1] = (int)((double)p[i*nRowBytes + j*nClrs + 1] / 85.0 + 0.5) * 85;
			p[i*nRowBytes + j*nClrs + 2] = (int)((double)p[i*nRowBytes + j*nClrs + 2] / 85.0 + 0.5) * 85;

		}

	}
}
上述代码很清楚的解决了变为灰度级为4的图像,其他的灰度级类似像这样处理即可。

2019-12-23 12:44:07 weixin_44244154 阅读数 25
  • 量化分析师的Python日记

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 量化分析师的Python学习教程,课程先从介绍Python本身一些基本语法,再介绍 python 相关应用及在数据分析及处理领域几大利器:pandas、scipy、numpy、sklearn、matplotlb。

    9855 人正在学习 去看看 CSDN讲师

一、实验目的

通过学习采样和量化获取图像的方法,将图像转换为数字形式并进行相应的采样和量化变换,观察图像的变化情况,加深对于采样和量化的理解,并学会如何将彩色图转化为灰度图和二值图。

二、实验内容

1、用matlab编写采样和量化程序,并对比分析不同空间和幅度分辨率的数字化图像的效果;
2、用matlab编写彩色图变灰度图和二值图;

图像的采样和量化原理如下:

灰度图像的采样和量化原理:
采样是把空域上或时域上连续的图像(模拟图像)转换成离散采样点(像素)集合(数字图像)的操作,这些值可以是均匀间隔也可以不是。采样越细,像素越小,越能精细地表现图像。
量化是把像素的灰度(浓淡)变换成离散的整数值的操作,用黑(0)白(255)两个数值(即2级)来表示,成为二值图像。量化越细致,灰度级数(浓淡层次)表现越丰富。

采样:

图像在空间上的离散化称为采样,在使用matlab对图像进行采样的过程中,首先用imread()函数将图像信息转化为矩阵信息进行保存,由于图像为RGB三色,所得到的信息是三维的,因此先使用rgb2gray()函数将图像转化为二维的灰度图,然后再进行采样。
在采样时,使用其他矩阵来对原始矩阵的值进行分间隔采样,将采样得到的新的信息保存在其他矩阵当中,例如I2=I1(1:2:end,1:2:end)即对原始矩阵行和列每隔1个点进行采样,同理进行其他点数的采样。

I=imread('a2.png');%读取图像信息
subplot(231);
I1=rgb2gray(I);%将三维的彩色图像转化为二维的灰度图,否则采样时会出现RGB三个方向上的三张采样图
imshow(I1)
title('原始图像'); %输出该图像

I2=I1(1:2:end,1:2:end);    %行列方向分别从第一位开始采样,
                           %每隔一位采样一个点,产生一个新的矩阵
subplot(232);    
imshow(I2)
title('采样图像(128*128)');
 
I3=I1(1:4:end,1:4:end);    
subplot(233)
imshow(I3)
title('采样图像(64*64)');
 
I4=I1(1:8:end,1:8:end); 	  
subplot(234);
imshow(I4)
title('采样图像(32*32)');

I5=I1(1:16:end,1:16:end);
subplot(235);
imshow(I5)
title('采样图像(16*16)');

I6=I1(1:32:end,1:32:end);
subplot(236);
imshow(I6)
title('采样图像(8*8)');

采样结果如下:
**采样结果如下:**
通过比较可以清楚的发现通过对不同点数的采样,所得到的图像有很大的差距,随着采样点数的不断减少,所呈现出的图像越来越模糊,最后趋向于马赛克,这也表明采样点数越多,图像质量越好,因此如果图像含有丰富的细节,则要尽可能多的选取采样点使得图像质量更好。

量化:

把采样得到的各像素的灰度值从模拟量到离散量的转换称为图像灰度的量化。在matlab量化图像的过程中,由于图像为RGB三色,所得到的信息是三维的,因此也要先使用rgb2gray()函数将图像转化为二维的灰度图,然后再进行量化,调用histeq(,)函数来改变图像的灰度级数来实现不同量化级数下的图像量化。


I=imread('a2.png');%读取图像信息
subplot(231);
I=rgb2gray(I);%将三维的彩色图像转化为二维的灰度图,否则采样时会出现RGB三个方向上的三张采样图
imshow(I)
title('原始图像(256色)'); %输出该图像

I1=histeq(I,64);%调用histeq函数将图像的灰度级数改为64
I2=histeq(I,32);
I3=histeq(I,16);
I4=histeq(I,4);
I5=histeq(I,2);
subplot(2,3,2),imshow(I1),title('量化图像(64色)');
subplot(2,3,3),imshow(I2),title('量化图像(32色)');
subplot(2,3,4),imshow(I3),title('量化图像(16色)');
subplot(2,3,5),imshow(I4),title('量化图像(4色)');
subplot(2,3,6),imshow(I5),title('量化图像(2色)');

量化结果如下

通过不同量化级数下的对比分析可以发现,随着量化越来越低,图片的细节越来越不清晰不细致,图片的效果也越来越差,当为二值图像时,图像出现假轮廓。因此,当图像色彩变化较缓,细节很少时,可以采用细量化来使图像不会出现假轮廓。

彩色图像变灰度图

调用函数可直接转换

I=imread('a2.png');%读取图像信息
subplot(131);
imshow(I)
title('原始图像'); %输出该图像

I=rgb2gray(I);%将三维的彩色图像转化为二维的灰度图,否则采样时会出现RGB三个方向上的三张采样图
subplot(132);
imshow(I)
title('灰度图'); %输出该图像

I1=histeq(I,2);
subplot(133);
imshow(I1)
title('二值图'); %输出该图像

实验结果如下
在这里插入图片描述
由实验结果可以看出,当把图像变为二值图后,每个像素点均为黑色或者白色的图像。二值图像一般用来描述字符图像,其优点是占用空间少,缺点是,当表示人物,风景的图像时,二值图像只能展示其边缘信息,图像内部的纹理特征表现不明显。

没有更多推荐了,返回首页