目的:(1)对一帧8bits 128x128的灰度图像处理为1bits和3bits的128x128灰度图像。
(2)处理为8bits 64x64和32x32的灰度图像。
一、基本原理
一幅图像的x和y坐标及幅度可能都是连续的。为了把它转换为数字形式,必须在坐标和幅度上都进行取样操作。数字化坐标值称为取样,数字化幅度值称为量化。1.1灰度级和空间分辨率(细微结构的分辨率)
单色图像在任何坐标(x0,y0)处的强度为图像在那一点的灰度级(l),即l=f(x0,y0)
l位于下列范围:
Lmin ≤ l ≤ Lmax、
区间[Lmin,Lmax]称为灰度级,常令该区间[0,L-1]。
数字化过程对于M,N值和每个像素允许的离散灰度级数L需要一个判定。对于M和N,除了必须取正整数外没有其他要求。然而,处于处理、存储和取样硬件的考虑,灰度级典型的取值是2的整数次幂,即
1.2降低图像空间分辨率
降低图像空间分辨率是从原图像中删去一样的行和列数完成的。例如,512x512图像是从1024x1024图像中每隔一行或一列删去一行或一列得到的。256x256图像是从512x512图像中每隔一行或一列删去一行或一列产生的,以此类推。其灰度级保持在256。
1.3灰度级数变换算法步骤
Step1.把0-255灰度值中小于127的值赋值为0,其他赋值为255,共2个灰度级,输出为1bit图像;Step2.把0-255灰度值均匀分成2^3=8份,即为8个灰度级,输出为3bit图像。
二、结果分析
可以看出,处理后的图像灰度级减少,灰度级变成2,变成灰度只有0和1的二值图。
可以看出,处理后的图像灰度级减少,灰度级变成23即8个灰度级,此时的图像严重压缩,比原始图像减少了很多信息。
由上图可知,处理后的图像复原到128*128大小,与原图相比,损失了较多细节,整个图像上显示出稍微明显的颗粒,这些颗粒在下图更加明显了。
随着取样密度变小,图像质量变差,图像颗粒非常明显,损失了诸多细节。
三、完整程序
- a=imread('123.bmp');
- b=rgb2gray(a);
- figure(1)
- imshow(b);
- title('8bits 128x128灰度图像');
- [m,n]=size(b);
- for i=1:m
- for j=1:n
- if(b(i,j)>0)&&(b(i,j)<127)
- b(i,j)=0;
- else
- b(i,j)=255;
- end
- end
- end
- figure(2)
- imshow(b);
- title('1bit 128x128图像');
- b1=rgb2gray(a);
- [m,n]=size(b1);
- for i=1:m
- for j=1:n
- if(b1(i,j)>0)&&(b1(i,j)<32)
- b1(i,j)=0;
- end
- if(b1(i,j)>31)&&(b1(i,j)<64)
- b1(i,j)=32;
- end
- if(b1(i,j)>63)&&(b1(i,j)<96)
- b1(i,j)=64;
- end
- if(b1(i,j)>95)&&(b1(i,j)<128)
- b1(i,j)=96;
- end
- if(b1(i,j)>127)&&(b1(i,j)<160)
- b1(i,j)=128;
- end
- if(b1(i,j)>159)&&(b1(i,j)<192)
- b1(i,j)=160;
- end
- if(b1(i,j)>191)&&(b1(i,j)<224)
- b1(i,j)=192;
- End
- if(b1(i,j)>191)&&(b1(i,j)<224)
- b1(i,j)=224;
- end
- if(b1(i,j)>223)
- b1(i,j)=255;
- end
- end
- end
- figure(3)
- imshow(b1);
- title('3bits 128x128图像');
- figure(4)
- b=rgb2gray(a);
- J= b(1:2:end,1:2:end);
- imshow(J);
- title('8bits 128*128变换为64*64');
- figure(5)
- J = b(1:2:end,1:2:end);
- J=imresize(b,[32,32]);
- imshow(J);
- title('8bits 128*128变换为32*32');