【欢迎关注、点赞、收藏、私信、交流】共同学习进步

摘 要: 本实验采用一种基于点模式的灰度级打印方案—半色调技术对图像进行尺度、灰度的调整、显示和打印,实验用3*3的黑白点模式来表示每一个灰度级,用黑点全部填充的 3 * 3 区域近似表示灰度级为0的黑色灰度级,全部填充白点的 3*3 模式近似表示灰度级为9 的白色灰度级,其它的点模式表示这二者之间的灰度级。即输入图像中的每一个像素将对应于打印图像中的3*3个像素, 这样在水平和垂直方向上的空间分辨率将减少为原始图像的 33%。因此为了防止输入图像尺寸过大而使程序打印出来的图像超出A4纸的打印区域,需要编写一个调整原始图像尺寸大小的程序,并写一个生成尺寸为 256*256 大小的渐变测试图像的程序,最后对几幅图像的进行处理来验证半色调技术。

1、实验目的

(a)、 编写一个使用上述点模式的半色调技术打印灰度图像的程序。要求程序可以对输入图像的尺度(尺寸)进行调整,以便使打印图像不超出 A4 纸(21.6 x 27.9 cm)的打印区域;要求程序在打印输出以前将输入图像的灰度级范围变换到半色调的整个灰度范围。

(b)、编写一个生成尺寸为 256*256 大小的渐变测试图像的程序。输出图像第 1 列像素灰度为 0,第 2 列像素灰度为 1,以此类推,最后 1 列像素灰度为 255。使用(a)中编写的灰度图像打印程序打印该图。

(c)、 使用(a)中编写的灰度图像打印程序打印课本图 2.22(a)到(c)。打印结果是否符合课本图 2.23 给出的结论并给出解释。

技术论述

半色调技术是指用少量的色彩将一幅连续色调图像(如灰度图像和彩色图像)量化为一幅二值图像或是只有少数几种色彩的彩色图像,并且量化后图像在一定距离的视觉效果和原始图像相似的技术。众所周知,数字半色调技术是指基于人眼视觉特性和图像呈色特性,利用数学、计算机等工具,在单色/多色二值呈色设备上实现图像的最优再现的一门技术。数字半色调是利用人眼的低通特性,当在一定距离下观察时,人眼将图像中空间上接近的部分视为一个整体。利用此特性,人眼观察到的半色调图像局部平均灰度近似于原始图像的局部平均灰度值,从而整体上形成连续色调的效果。它的发展共经历了三个阶段:照相加网(即模拟加网)、电子加网和计算机数字加网三个发展阶段。

采用 MATLAB 编程环境写 M 函数去完成实验,MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。它主要提供以下功能:用于技术计算的高级语言;可对代码、文件和数据进行管理的开发环境;可以按迭代的方式探查、设计及求解问题的交互式工具;可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等的数学函数;可用于可视化数据的二维和三维图形函数;可用于构建自定义的图形用户界面的各种工具;可将基于MATLAB的算法与外部应用程序和语言集成的各种函数等。在本实验中我们主要运用了MATLAB扩展的图像处理工具箱进行(如利用函数imread、imshow和imresize可以实现对图像的读取、显示和调整)。

实验过程与分析

1、本实验给出了用点模式近似表示的 10 个灰度级的图像,每一个3 * 3 的黑白点模式表示一个灰度级,用3*3全黑点近似表示灰度级为0的黑色灰度级,3*3全白点近似表示灰度级为9的白色灰度级。通过半色调技术进行图像的显示和打印。根据实验要求可以构建一个三位矩阵来表示10个灰度级,再将图像中的每一个点映射到点阵中,把数据类型转换为unit8就可以生成半色调打印技术的程序。

2、因为要用3*3的像素点代替原来的一个像素点,因此在水平和垂直方向上的空间分辨率将减少为原始图像的 33%,也就是输入图像的尺寸大小可能变为原图像的三倍,所以要对输入图像的大小进行预处理,调整它的尺寸大小,在这里可以调用函数imresize()去缩小图像尺寸大小。采用B = imresize(A, scale)的格式缩小图像,表示图像B的长宽是图像A的长宽的scale倍。若scale大于1,则放大图像;若scale小于1则缩小图像,scale的取值范围为0到10之间。

3、在MATLAB中构造一个256*256大小的矩阵,用for循环语句对每列元素从0到255进行赋值,通过imshow()和imwrite()函数显示输出图像并把输出图像写入当前目录中。

实验结果讨论

由渐变测试灰度图像程序生成的256*256 大小渐变测试灰度图像如图1-1(a)所示,经过半色调打印技术输出的渐变灰度图像如图1-1(b)所示。实验目的(c)要求使用(a)中编写的灰度图像打印程序打印课本图2.22(a)到(c),经过尺寸调整和半色调打印技术后的图像如下图2-1(a)、2-1(b)、2-2(a)、2-2(b)、2-3(c)、2-3(c)所示。经过对比可知输入图像2.22(a)和2.22(c)的尺寸均大于256*256,需要经过图像尺度调整,最后输出图像的尺寸为816*816。输入图像2-22(c)的尺寸不大于256*256,不需要经过图像尺度调整,最后输出图像尺寸为768*768。

图1-1(a) 渐变测试灰度图像

图1-1(b) 半色调打印技术输出的渐变灰度图像

图2-1(a) 经尺寸调整的2.22(a)图像

图2-1(b) 半色调打印技术处理后的2.22(a)图像

图2-2(a) 经尺寸调整的2.22(b)图像

图2-2(b) 半色调打印技术处理后的2.22(b)图像

图2-3(a) 经尺寸调整的2.22(c)图像

图2-3(b) 半色调打印技术处理后的2.22(c)图像

附录:程序清单

% 1、半色调打印技术的图像处理程序

matlab在二值图像上画曲线_数字图像处理:Image Printing Program Based on Halftoning相关推荐

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

    实验要求: Image Printing Program Based on Halftoning Objective: To know in principle what is "halft ...

  2. matlab在图片上画圆_在Matlab中识别的图像周围画一个圆圈

    我有一张参考图片,我想围绕参考图片中存在的图片绘制一个圆圈. 现在,它在参考图片中存在的图片上绘制一个矩形,但我不知道如何使其成为圆形.在Matlab中识别的图像周围画一个圆圈 boxImage = ...

  3. matlab将二值图像与原图重叠_[转载]图像处理matlab及图像融合图像镶嵌图像拼接...

    在实际的对图像处理过程中,由于我们读出的图像是unit8型,而在MATLAB的矩阵运算中要求所有的运算变量为double型(双精度型).因此读出的图像数据不能直接进行相加求平均,因此必须使用一个函数将 ...

  4. 8bit黑白图像的灰度值范围是_数字图像处理基本知识

    1.数字图像: 数字图像,又称为数码图像或数位图像,是二维图像用有限数字数值像素的表示.数字图像是由模拟图像数字化得到的.以像素为基本元素的.可以用数字计算机或数字电路存储和处理的图像. 2.数字图像 ...

  5. matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21

    数字图像处理期末复习2018-12-21 愉快先生 0.204 · 字数 5547 · 阅读 1834 2018-12-22 19:35 (数字图像冈萨雷斯第二版教材) 一.基本原理 图像的读取.存储 ...

  6. matlab 形态学 颗粒_数字图像处理Matlab-形态学图像处理(附代码)

    这是一篇基于matlab,数字图像处理的形态学研究与实现的文章,希望能对你产生帮助. 我还写了一套<数字图像处理>(冈萨雷斯版本)的学习笔记,欢迎关注我的csdn同名主页,一起学习成长~ ...

  7. matlab 图像分割 提取人像_数字图像处理实验合集(含代码、报告)

    数字图像处理(MATLAB) 实验一 一.实验名称 图像的采样与量化 二.实验目的 1.熟悉MATLAB软件的使用. 2.掌握采样与量化的原理及数学运算. 3.于MATLAB环境下编程实现对图片的不同 ...

  8. qgis在地图上画导航线_在Laravel中的航线

    qgis在地图上画导航线 For further process we need to know something about it, 为了进一步处理,我们需要了解一些有关它的信息, The rou ...

  9. Matlab 在图片上画虚线矩形框

    matlab在图片上rectangle详解 Rectangle 属性 矩形的外观和行为 矩形属性控制矩形对象的外观和行为.通过更改属性值,您可以修改矩形的特定方面.使用圆点表示法查询和设置属性. h ...

  10. 【基于matlab数字图像处理GUI代码】_数字图像处理考核论文_大作业_项目

    基于matlab数字图像处理GUI代码 代码: function varargout = Image_processing_GUI(varargin) % IMAGE_PROCESSING_GUI M ...

最新文章

  1. lz0-007 读书笔记09
  2. 教您怎么从spring 官网下载参考文档
  3. 多个应用SD-WAN实现业务连续性的方法——微云网络
  4. CSS学习01之我的第一css程序
  5. 【Flask项目2】创建用户模块的蓝图(7)
  6. 关于.cpp文件包含另一个.cpp文件出错的原因以及解决办法
  7. Xcode Cocoa程序MessageBox 弹框
  8. C++ 如何用创建txt文件,并且写入内容(汇总)
  9. eclipse占用内存过大_idea被评最好用java开发工具,为什么用eclipse的人更多?
  10. 推荐算法--利用用户标签数据(04)
  11. 将Docker image push 到azure
  12. 项目日报模板_聪明的项目经理,都会利用周报让老板重视你
  13. 计算机键盘上的2个定位键,电脑键盘上Tab 键的神奇之处!(用途详解)
  14. 阿帕网几台大型计算机网络,阿帕网-互联网的鼻祖(中) | 午夜猫
  15. Linux互信及互信失效问题
  16. 理解shallow heap 和 retained heap
  17. 硬盘 主分区 和 逻辑分区 区别
  18. 阿里云凌晨回应故障:已全部恢复 将尽快赔偿
  19. 我见过最全的剖析QEMU原理的文章[Z]
  20. 用eclipse配置hibernate的hbm.xml文件时遇到的一些问题

热门文章

  1. android aysncTask面试解析
  2. KnockoutJS 3.X API 第七章 其他技术(3) 延迟更新
  3. 二 、 搭建Android 开发环境读书笔记
  4. WP7开发解惑(转载)
  5. 虚拟化应用(三)Hyper-V 2.0 初探
  6. JVM监控及诊断工具GUI篇之Arthas(二):jvm相关指令
  7. SpringBoot项目文件上传
  8. mysql的索引(二)
  9. UDP ECHO server
  10. 阿里Q3财报:阿里云连续第7个季度翻番