本文章包含以下内容:

1、编程实现不同采样数图像的显示效果;

2、编程实现不同量化等级图像的显示效果;

3、用手机或数码相机采集图像,并分别编程实现数字化。

代码如下:(可全部放到 function U() 中)

function U()
clear;
clc;
img = imread('Cameraman.tif');
% 图像采样:
figure('Name', '图像采样');     %开一个标题为“图像采样”的窗口
for i = 1 : 6   % 6 副图像
    subplot(2,3,i);     % 共 2 行 3 列 第 i 个
    % x,y由 1 每隔 2^(i-1) 个采样,之后显示
    imshow(img(1:2^(i-1):end,1:2^(i-1):end));
    str = num2str(2^(9-i));  % 计算图像采样大小后转为字符串,便于显示。
    title(['图像(',str,'*',str,')']); %显示图像名称。
end
figure('Name', '图像量化');     %开一个标题为“图像量化”的窗口
j = [8,6,4,3,2,1];
for i = 1 : 6   % 6 副图像
    subplot(2,3,i);     % 共 2 行 3 列 第 i 个
    c = 2^(8-j(i));    %  计算灰度减少值
    if(i == 6)
        % 如果是二值图像,直接以128为分界,为保证图像色调一致,不用255
        imshow(uint8((img>=128)*128));
    else
        % 转为双精度后除以灰度减少值,再取整后乘以灰度减少值。
        imshow(uint8(round(double(img)/c)*c));
    end
    str = num2str(2^(j(i)));  % 计算图像量化级数后转为字符串,便于显示。
    title([num2str(j(i)),'比特图像(',str,'级)']); %显示图像名称。
end
figure('Name', '琼枝玉树');     %开一个标题为“琼枝玉树”的窗口
img = imread('snow_bush.jpeg');
shuzihua(3,2,img);              % 细节图,细采样,粗量化,
figure('Name', '白虹破空');     %开一个标题为“白虹破空”的窗口
img = imread('sky_plane.jpeg');
shuzihua(5,6,img);              % 缓变图,粗采样,细量化,

% 数字化函数,cai 隔 2^cai行采样。
% 这里图片为 3648 *2736 所以 cai 取值为[0~9] 越小越好
% liang 量化比特数(8~1)越大越好
% img 数字化图片
function shuzihua(cai,liang,img)
    
    subplot(2,2,1);         % 共 2 行 2 列 第 1 个
    imshow(img);            %输出原图
    title('原图');          %标签
    img1 = rgb2gray(img);	%RGB转化为灰度图像
    subplot(2,2,2);         % 共 2 行 2 列 第 2 个
    imshow(img1);           %输出灰度图像
    title('灰度图像');  	%标签
    % 采样后的图像
    img1 = img1(1:2^cai:end,1:2^cai:end);
    subplot(2,2,3);         % 共 2 行 2 列 第 3 个
    imshow(img1);           %输出采样后图像
    title(['采样后图像',num2str(size(img1))]);  	%标签
    % 量化后的图像
    c = 2^(8-liang);         %  计算灰度减少值
    if(liang == 6)
        % 如果是二值图像,直接以128为分界,为保证图像色调一致,不用255
        img = uint8((img>=128)*128);
    else
        img1 = uint8(round(double(img1)/c)*c);
    end
    subplot(2,2,4);         % 共 2 行 2 列 第 4 个
    imshow(img1);           %输出量化后图像
    title(['量化后图像',num2str(liang),'比特']);     %标签

结果示例:

采样会影响图片的像素值,影响图片的清晰程度,量化会影响图片的色彩丰富程度。

理论上,采样点和量化等级越高,图像质量越高;

1.当量化级数一定时,采样点数减少时,图上的块状效应逐渐明显;

2.当采样点数一定时,量化级数越少,图像质量越差。

当限定数字图像的大小时,为了得到质量较好的图像,可采用如下原则:

1.对缓变得图像,应该细量化,粗采样,以避免出现假轮廓;

2.对细节丰富的图像,应细采样,粗量化,以避免模糊。

         图片文件名可能需要更改,放置在程序同目录下

 本文章所需的图片

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐