logo资料库

数字图像处理——灰度图像下采样以及量化(by raphealguo).doc

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
实验报告——灰度图像下采样以及量化
摘要:本实验探讨了灰度图像的下采样以及量化的技术,并加以实现(采用Matlab实现),通过实验探讨下
技术讨论:
1、灰度图像的下采样
2、灰度图像的量化
实验结果与讨论
1、灰度图像的下采样
2、灰度图像的量化
附录:Matlab源码
实验报告——灰度图像下采样以及量化 by raphealguo 实验报告——灰度图像下采样以及量化 课程名称:数字图像处理 实验编号:Project 02 raphealguo (Email:raphealguo@qq.com) 实验开始时间:2011 年 11 月 23 日 提交时间:2011 年 11 月 25 日 摘要:本实验探讨了灰度图像的下采样以及量化的技术,并加以实现(采用 Matlab 实现),通过实验探讨下采样的两种做法(删除行列以及邻域平均)比较 了其处理结果;通过探讨量化的两种做法(保留高位以及采用 IGS-Improved gray-scale 量化)比较了其处理结果。 技术讨论: 1、灰度图像的下采样 本报告中探讨的是按比例下采样,给定一个 m*n 的灰度级图像,对其进行比 例 s 的下采样,得到 m/s * n/s 的灰度级图像,这里规定 s 必须被 m、n 所整除。 做法一(PD):通过删除行列的方式来下采样。对行的操作是保留一行删除 接下来的 s-1 行,同样道理,队列的操作是保留一列然后删除接下来的 s-1 列。 做法二(AVE):将图像分割成 s*s 个小窗口,此时窗口个数即为 m/s * n/s 个,对每个小窗口进行求和均值运算,得到该窗口所对应的灰度值,公式如下: P k   ( kwin 2/ sI i ) i  win(k)表示第 k 个窗口,Ii 表示窗口里各个像素的灰度值,s 则为窗口大小, Pk 是替代窗口的灰度值。 - 1 -
实验报告——灰度图像下采样以及量化 by raphealguo 2、灰度图像的量化 我们知道灰度范围是[0,255],从计算机存储的角度来说,每个灰度值就是 8 个比特。对一幅灰度图像,从灰度级为 256 降低到灰度级 128、64、32……可以 看出是 8 个比特的数值分别舍弃 1、2、3 个比特……由于 8 个比特中对灰度影响 最大的是最高位,因此做舍弃处理时,从最低位开始舍弃,这里的舍弃仅仅将改 为置成 0。 以上探讨了保留灰度值高位的量化方法,在此基础上,阅读了 IGS-Improved gray-scale 量化的方法,这种做法的结果仅适合与眼睛观看以及图像压缩。方法 就是将图像一列一列的扫描,再利用类似半色调列印的误差扩散概念创造没有假 边的量化图像。假设目前需要把一个灰度级为 8 的图像量化成灰度级为 4 的图像, 按照前面的描述,对于每个灰度值,只有前四位是重要的!,IGS 的处理步骤如 下: a).首先将图像表示成 8 位的二进制字符串;图像的每一列是单独处理的; b).定义一个 4 位长度的字符串 sum = "0000"; c).从左到右扫描图像的每一列,将当前像素值的二进制字符串加上 sum 得到 一个结果 I,根据前面讨论的量化方法,I 的前四位即为量化结果,I 的后四位设 为下一轮要参与计算的 sum 值。倘若某个像素的最左边 4 位为"1111",此时跳过 本步骤的加法。重复以上步骤直到所有列抖扫描完毕。 列数 灰度值 二进制串 1 2 3 4 5 6 7 8 48 50 52 54 56 252 58 60 0011 0000 0011 0010 0011 0100 0011 0110 0011 1000 1111 1100 0011 1010 0011 1100 - 2 - sum 0011 0000 0011 0010 0011 0110 0011 1100 0100 0100 1111 0100 0011 1110 0100 1010 量化结果 48(0011 0000) 48(0011 0000) 48(0011 0000) 48(0011 0000) 64(0100 0000) 240(1111 0000) 48(0011 0000) 64(0100 0000)
实验报告——灰度图像下采样以及量化 by raphealguo 实验结果与讨论 1、灰度图像的下采样 采用 PD 下采样方法以及采用 AVE 下采样的方法所得的结果如图 1.(a)-(e)所 示: (a) (b) (c) - 3 -
实验报告——灰度图像下采样以及量化 by raphealguo (d) (e) 图 1.左侧一列采用 PD 方法下采样,右侧一列采用 AVE 方法下采样; a)图像分辨率为 16*16,b)图像分辨率为 32*32,……e)图像分辨率为 256*256 从图 1 中的对比可以看出,采用 AVE 下采样的方法,图像在颜色的过渡会 比用 PD 下采样方法更加柔和,从本次实验的这张图片 lena.bmp 来说,显然采用 AVE 的方法会使得处理效果更好,从(d)中能明显看出差别,一些边缘会较为平 滑。 2、灰度图像的量化 采用非 IGS 量化的方法和采用 IGS 量化的方法所得的结果如图 2a)-(g)所示: - 4 -
实验报告——灰度图像下采样以及量化 by raphealguo (a) (b) (c) - 5 -
实验报告——灰度图像下采样以及量化 by raphealguo (d) (e) (f) - 6 -
实验报告——灰度图像下采样以及量化 by raphealguo 图 2.左侧一列采用非 IGS 量化,右侧一列采用 IGS 量化方法; a)图像灰度级别为 2,b)图像灰度级别为 4,……g)图像灰度级别为 128 (g) 从图 2 中的对比可以看出,采用 IGS 量化的方法,在低灰度分辨率情况下, 灰度的过渡会更自然,不会像普通的量化方法那样存在一大块边缘生硬的色块。 我认为这种结果可能仅对于人眼观看结果会比较有效,而对于分析数据未必有帮 助。 附录:Matlab 源码 % ---------------------------------------------------- % Downsampling By Deleting row and column % @author raphealguo(Email:raphealguo@qq.com) % ---------------------------------------------------- % ------- % Downsampling By Deleting row and column % % @param % % @return % y:new image's data scale:should be Be divisible by both of the img's row and col function y = downsampling_pd(scale) % read img - 7 -
实验报告——灰度图像下采样以及量化 by raphealguo x = imread('lena.bmp'); [r, c] = size(x); if (mod(r, scale) ~= 0 || mod(c, scale) ~= 0) error('The param scale must be a integer that can be divisible by both of img''s row and col'); end new_r = r/scale; new_c = c/scale; y = zeros(new_r, new_c); for (i = 1 : r) if (mod(i, scale) == 0) for(j = 1 : c) if (mod(j, scale) == 0) y(i/scale, j/scale) = x(i, j); end end end end y = uint8(y); % save image which filename like: "lena_downsampling_pd_128_128.bmp" imwrite(y, ['lena_downsampling_pd_', num2str(new_r), '_', num2str(new_c), '.bmp']); end % ---------------------------------------------------- % Downsampling By AVE % @author raphealguo(Email:raphealguo@qq.com) % ---------------------------------------------------- % ------- % Downsampling By AVE % % @param % % @return % y:new image's data scale:should be Be divisible by both of the img's row and col function y = downsampling_ave(scale) % read img - 8 -
分享到:
收藏