实验要求:

Image Printing Program Based on Halftoning
Objective:
To know in principle what is “halftoning”, the definition of resolution, and how to print an image in a mono-chromosome printer.
Main requirements:
Ability of programming with C, C++, or Matlab.
Instruction manual:
The following figure shows ten shades of gray approximated by dot patterns. Each gray level is represented by a 3 x 3 pattern of black and white dots. A 3 x 3 area full of black dots is the approximation to gray-level black, or 0. Similarly, a 3 x 3 area of white dots represents gray level 9, or white. The other dot patterns are approximations to gray levels in between these two extremes. A gray-level printing scheme based on dots patterns such as these is called “halftoning.” Note that each pixel in an input image will correspond to 3 x 3 pixels on the printed image, so spatial resolution will be reduced to 33% of the original in both the vertical and horizontal direction. Size scaling as required in (a) may further reduce resolution, depending on the size of the input image.
(a) Write a halftoning computer program for printing gray-scale images based on the dot patterns just discussed. Your program must be able to scale the size of an input image so that it does not exceed the area available in a sheet of size 8.5 x 11 inches (21.6 x 27.9 cm). Your program must also scale the gray levels of the input image to span the full halftoning range.
(b) Write a program to generate a test pattern image consisting of a gray scale wedge of size 256 x 256, whose first column is all 0’s, the next column is all 1’s, and so on, with the last column being 255’s. Print this image using your gray-scale printing program.
(c) Print book Figs. 2.22(a) through (c) using your gray-scale printing program. Do your results agree with the conclusions arrived at in the text in pgs. 61-62 and Fig. 2.23? Explain. You will need to download Figs. 2.22(a) through (c).

实验要求是英文的,不懂的词查查字典就行了,这里就不翻译了。
这里简单介绍一下:
Halftoning, 意思是半色调(技术),而在前面的英文实验要求中详细介绍了其原理。
我们主要看下面这幅图:

假设一幅灰度图像,那么我们知道它的每个像素都有一个对应的灰度值,通常这个灰度的取值范围是 0 ~ 255,即 8 bit 灰度级。而半色调技术的意思就是,如图中所示,将灰度级压缩,划分成 10 个灰度级,取值范围是 0 ~ 9。我们想将以前的图像的一个像素,用现在的一个 3 * 3的矩阵表示,它在原图像中的像素值是一个 0 ~ 255 的数, 在 0 ~ 255 内10等分,即像素灰度值除以25.6,则其像素值就会对应图中的某一种情况,那么就用那个矩阵来表示这个像素。比如灰度是 0, 那么那个像素就用图中 0 的情况的矩阵表示。

程序实现不难,不多说直接上代码吧:

%%clear all;clc;close all;%% 生成一个大小为 256 *256 的简便灰度图像s = 256;y = zeros(s,s);% 每行对应一个灰度级for (i=1:s)y(i,:)=(255-i-1)*ones(1,s);endy=uint8(y);imwrite(y,'general_img.jpg');%% 基于半色调计数的图像打印程序
%     x = imread('general_img.jpg');  %读取图片x = imread('gray_image.jpg');  %读取图片figure(1)imshow(x);title('original_image');[r, c] = size(x);   % 获取图片大小% 判断图片大小是否超过 272 * 352, 若超过则进行调整r_scale = double(r) / 272;  c_scale = double(c) / 352;scale = max(r_scale, c_scale);  % 找出较大的,后面进行压缩% 若图像过大,进行压缩if(scale > 1)x = imresize(x, 1.0 / scale ); imwrite(x, 'adjusted_img.jpg');endfigure(2)imshow(x);title('adjusted_image');%% 将256灰度级量化成10灰度级别[ry, cy] = size(x);     % 获取图片大小qim = fix( double(x) / 25.6 );  % 四舍五入。灰度级减小到10灰度级,取整数形式。y = zeros(ry*3, cy*3);  % 创建新图片% 构造点模式表示10个灰度级dot_mat(:,:,1)=zeros(3,3);dot_mat(:,:,2)=[0 255 0;0 0 0;0 0 0];dot_mat(:,:,3)=[0 255 0;0 0 0;0 0 255];dot_mat(:,:,4)=[255 255 0;0 0 0;0 0 255];dot_mat(:,:,5)=[255 255 0;0 0 0;255 0 255];dot_mat(:,:,6)=[255 255 255;0 0 0,;255 0 255];dot_mat(:,:,7)=[255 255 255;0 0 255,;255 0 255];dot_mat(:,:,8)=[255 255 255;0 0 255;255 255 255];dot_mat(:,:,9)=[255 255 255;255 0 255;255 255 255];dot_mat(:,:,10)=[255 255 255;255 255 255;255 255 255];% 对每个图像进行点阵映射for (i = 1:ry)for (j = 1:cy)level = qim(i, j);  % 去除灰度级y((i-1)*3+1:i*3,(j-1)*3+1:j*3)=dot_mat(:,:,level+1);endendy = uint8(y);figure(3)imshow(y);title('halftoning');imwrite(y,'halftoning.jpg');

实验结果:

第一张图片是原图像;
第二张图片是调整大小后的图像,由于使用半色调技术会将原图像放大,所以事先将图片大小缩小一些,避免使用半色调技术后生成的图像过大;
第三张图片就是结果, 也可以在当前文件夹目录下查看程序生成的halftoning.jpg图片。

数字图像处理实验(1):PROJECT 02-01, Image Printing Program Based on Halftoning相关推荐

  1. 【图像处理】基于半色调技术的图像打印程序(Image Printing Program Based on Halftoning)

    实验要求   本实验后面的图像给出了用点模式近似表示的10 个灰度级.每一个灰度级用一个3 x 3 的黑白点模式表示.用黑点全部填充的3 x 3 区域近似表示灰度级为0 的黑色灰度级,全部填充白点的3 ...

  2. 数字图像处理实验(总计23个)汇总

    以下这些实验中的代码全部是我自己编写调试通过的,到此,最后进行一下汇总. 数字图像处理实验(1):PROJECT 02-01, Image Printing Program Based on Half ...

  3. 数字图像处理实验01——直方图

    数字图像处理实验01 直方图 仅供学习 1.对实验图像RGB.jpg 进行彩色图像到灰度图像的转化,绘制其直方图,并选取合适的阈值将灰度图像转化为二值图像. 步骤 1)用下列函数将它们转换成不同灰度级 ...

  4. 实验1 数字图像处理的MATLAB基础,《数字图像处理(实验部分)》实验1_数字图像处理中MATLAB使用基础...

    <数字图像处理(实验部分)>教案 实验一:数字图像处理中MATLAB使用基础实验 一. MATLAB软件安装 二. 进入MATLAB运行环境 三. MATLAB编程基础 3.1.变量 预定 ...

  5. 中南民族大学计算机图像处理实验报告,中南民族大学数字图像处理 实验报告.pdf...

    WORD格式 院系:计算机科学学院 专业:计算机科学与技术 年级: 2011 级 课程名称:数字图像处理 组号: 02 姓名 ( 学号 ) :谢枫 石小飞 黄煜 柳卫平 李春豪 指导教师:徐胜舟 20 ...

  6. 数字图像处理matlab实验对图像复原,数字图像处理实验07图像的复原处理

    数字图像处理实验 一.数字图像处理实验 实验七 图像的复原处理 一.实验目的 熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理. 二.实验内容 1.用点扩散 ...

  7. 数字图像处理实验——Python语言实现

    数字图像处理实验--Python语言实现 实验一:数字图像处理入门 实验二:直方图均衡 实验三:线性平滑和锐化--掩模法 实验四:非线性平滑--中值滤波 实验五:非线性锐化--梯度法 GitHub地址 ...

  8. 数字图像处理实验三图像增强

    一.实验目的 (1)了解图像增强的目的及意义,加深对图像增强的 感性认识,巩固所学的图像增强的理论知识和相 关算法. (2)熟练掌握直方图均衡化和直方图规定化的计算过 程. (3)熟练掌握空域滤波中常 ...

  9. 数字图像处理实验四图像频域增强

    一.实验目的 (1)了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学的图像增强的理论知识和相关算法. (2)熟练掌握低通.高通.带通.同态滤波器的使用方法,明确不同性质的滤波器对图像的影响 ...

最新文章

  1. 数据结构03栈和队列
  2. 机器学习总结(17)-XGBoost
  3. java 对象复制字段_利用Java反射机制实现对象相同字段的复制
  4. MVC判断用是否登录了平台
  5. PMP试题 | 每日一练,快速提分 7.5
  6. 从零开始实现Unity光照模型_02_为Shader添加简单的多光源支持_技术美术基础学习记录
  7. 条形码图像生成库barcodelib使用介绍
  8. 项目邮件[置顶] 失业的程序员(十二):潜意识的智商
  9. 视觉SLAM十四讲笔记-6-1
  10. linux wifi开机自动连接 wifi连接
  11. android 11.0 12.0添加系统字体并且设置为默认字体
  12. 【以太网硬件十七】什么!?网线边传数据还能边供电?
  13. 计算机应用 胡丹,正高级
  14. 【学习笔记】NOIP爆零赛8
  15. 表面等离子体共振新进展!
  16. 电脑提示d3dcompiler_47.dll缺失怎么修复?
  17. 网络丢包问题的原因及解决办法
  18. 【每日笔记】:layui表单checkbox设为必选
  19. 进程和线程上下文切换
  20. 魔幻光影滤镜(2):仿Redfield Fractalius滤镜

热门文章

  1. Mybatis执行过程源码分析
  2. 卷积神经网络初探 | 数据科学家联盟 http://dataunion.org/20942.html
  3. caffe windows 学习第一步:编译和安装(vs2012+win 64)
  4. Java NIO学习系列五:I/O模型
  5. 适配器模式原理及实例介绍
  6. 分布式系统的事务处理
  7. 《JAVA与模式》之工厂方法模式
  8. C++面试宝典2011版
  9. Java程序员从笨鸟到菜鸟之(八十六)跟我学jquery(二)大话jquery选择器
  10. CUDA(六). 从并行排序方法理解并行化思维——冒泡、归并、双调排序的GPU实现