资源描述
图像处理和制版实验指导书10 (1)
———————————————————————————————— 作者:
———————————————————————————————— 日期:
14
个人收集整理 勿做商业用途
实验三 图像扫描分色
一、实验目的和要求
本实验为认知性实验。旨在通过实习,使学生掌握扫描仪的基本操作;了解原稿的扫描输入方法,不同类型原稿扫描参数的设置方法,及相应设置对所获得图像的作用和影响;了解并掌握彩色图像分色的原理。
要求扫描三种不同类型的原稿(包括一幅彩色图像原稿),利用Photoshop将扫描的彩色图像有RGB模式转换为CMYK模式,对照原稿观察C、M、Y、K 各通道的图像信息,学会分辨各分色图像.
二、图像扫描分色原理
图像扫描数字化的过程包括采样和量化两个过程,采样是将空间上连续的图像变换成离散点,并采集每一点的光信号,量化是将象素灰度转换成离散的整数值.
常用的扫描数字化仪器根据其扫描机理可以分为两类,其一是采用点扫描、以光电倍增管为核心转换器件的滚筒扫描仪;其二是以线或者是面阵扫描、以CCD或者是CMOS为核心转换器件的平板扫描仪。
扫描时,图像原稿放置在扫描支承台(滚筒或者是平板)上,扫描仪的光源逐点/行照射原稿,扫描仪的光学/电子单元从原稿获取图像信息。从原稿上反射或透射的图像光线经光学系统成像在光电转换器件上.由于光电转换器件上具备红/绿/蓝三种滤色片,从原稿来的光线先被分解成红/绿/蓝光,再经光电转换器件转换成红/绿/蓝模拟电信号。
模/数转换器将模拟电信号转换成红/绿/蓝模拟电信号.经过扫描软件和相关硬件的图像处理,得到数字图像数据。数字图像数据经接口传送到计算机内,最终存储成数字图像文件。
在扫描过程中首先将彩色原稿各象素点反射或透射的三色混合色光分离成三种基本色光,即得到R、G、B三色光图像,经由软件将图像由RGB模式转换为CMYK模式.
三、实验过程
1、试验准备
(1)原稿准备
印刷原稿只有反射稿和透射稿两大类。反射线条原稿、反射连续调原稿、实物原稿和印刷品原稿均属于反射稿范畴。
透射原稿分透射线条原稿和透射连续调原稿两类。透射线条原稿包括照相透射线条负片原稿、照相透射线条正片原稿和绘制透射连续调负片原稿、照相透射连续调正片原稿和绘制透射连续调原稿。
(2)系统准备
分为硬件准备和软件准备.
硬件在开始工作之前需要进行预热;软件主要指操作系统、图像采集系统和图像预处理系统等。
2、实验步骤
(1) 原稿分析与安装
在标准光源下, 按原稿的阶调层次、颜色状况、清晰度标准及缺陷程度, 鉴别出原稿状况, 即标准、中等、次等原稿及不能 复制的原稿, 进而区分。
扫描时原稿安装直接关系到能否获得高质量的分色图片,原稿加载不好会导致出现牛顿环等, 降低分色质量。首先需要对滚筒或者是平板玻璃进行擦拭以保证其洁净, 之后进行原稿的安装, 安装时应避免损伤原稿.
(2)扫描参数设置
扫描仪的基准校正包括焦距调节、白平衡和颜色调校等。调校扫描仪基准是为了保证图像输入、图像灰平衡、去网、防止色偏、控制图像尺寸大小和清晰度等符合设定的控制要求。扫描仪的白平衡校正是通过调整扫描三通道是要忠实复制、少量调整还是要进行纠正。
①核定原稿类型
在扫描软件对话框中可以找到原稿类型的图标选项, 依次为反射照片、天然色正片、负片、印刷原稿、黑白线条稿、用户自定义等,点击确认。
②确定扫描色彩模式
常见扫描色彩模式有RGB、CMYK、Lab 和Gray 四种模式.如果扫描结束后还要在Photoshop 或者其他软件中进行进一步处理,则应当采用RGB 模式;如果扫描得到的图像直接应用到印刷中的话,可以直接选择CMYK 模式;而对于线划原稿和单色连续调原稿,应选用Gray 模式.不管是RGB、CMYK、Lab 色彩模式还是Gray 色彩模式, 专业都能提供多个输出的色彩管理Profile 文件以供选择, 以便于在印刷流程中进行色彩管理。
③分辨率及扫描图像尺寸的设定
这里要设定的分辨率就是扫描图像的最终输出分辨率, 但是它不能超过扫描仪的最大光学分辨率。
分辨率的设置对于扫描图像的质量影响很大。如果分辨率设置太低, 则扫描图像颗粒粗糙、图像边缘呈锯齿状、质量很差; 如果分辨率设置太高, 则会使原稿中存在不必要的细节, 如画面上的斑点、褶皱以及图像周围的其他背景突显出来, 还会使扫描图像的存储空间过大, 影响扫描速度.因此, 必须正确设置扫描图像的分辨率, 以得到清晰的图像。
④黑白场定标
定标是指确定原稿再现的阶调范围,即将原稿的高光点和暗调点分别对应于扫描图像输出信号的最大值和最小值,它是整个图像复制的基础和关键。
就阶调而言,白场定暗了,高调就变暗了;如果黑场定亮了,整个图像画面又不够黑.正确的白场、黑场选点与设定要根据各种类型原稿的特点和印刷适性条件, 充分利用纸张的白度和四色油墨叠加的最大密度,达到最佳的视觉反差效果。黑白场的设定要尽可能扩展原稿主体的阶调,加大反差力度。
⑤层次及颜色校正
在扫描软件中可以对混合通道或单色通道进行层次改变。在调整层次时可以较严格地控制在一定范围之内, 而不影响其他层次。
⑥锐化和平滑处理
无论是在扫描过程还是印刷过程都会降低图像的清晰度, 因此为了恢复那些鲜明的细节, 采用锐化技术是很有必要的。锐化即 图像清晰度强调, 其核心在于提高边缘反差。锐化要针对不同的图像内容调整不同的锐化程度, 如果图像包含比较远的风景或城市景色, 较远的人或动物, 大量的细节, 那么就允许用适量的锐化; 如果图像包含的细节较少、形状简洁、或存在人物或动物的特写, 则锐化程度应尽量小一些。
(3)预扫描
预扫描是为了确定正式扫描的范围和进行扫描参数的设定而进行的低分辨率的扫描。为便于准确划定正式扫描区域和观察分析原稿图像, 预扫描的分辨率当然是越高越好, 但是过高的分辨率会浪费时间.一般预扫描的分辨率是72dpi。
(4)扫描
按照前面的各个步骤做好所有的基础和准备工作以后, 就可以开始扫描原稿了。
对扫描好的图片进行处理时应注意以下4 点:
①保证图片的高光部分不绝网;
②保证图片的暗调部分层次不并级;
③尽可能保证中间调的层次丰富、亮度适中;
④在做底色去除时要保证图片的暗调部分的四色叠加后不超过260%~280%.
(5)网纹的处理
扫描半色调原稿时, 如果不对其进行去网处理,就肯定会出现看得见的莫尔纹。这些莫尔纹不仅仅影响图像的主观质量, 还将影响到图像的后续处理,例如将此扫描图像当作原稿来进行制版、印刷, 最终影响印刷品的质量。因此, 扫描仪的去网能力也是衡量其性能的一个重要标准。
专业扫描软件都有去网滤镜功能,可以直接对扫描图像进行去网处理。只要在扫描设置面板上的去网栏里设置一定的去网线数,就可以在扫描的过程中达到去网的目的, 具体去网线数的设置只要和印刷文件的加网线数保持一致,就可以消除掉大部分的网纹。
另外有的印刷品原稿的网纹现象很严重, 扫描中的去网功能仍不能使图像很好的达到去网目的,此时可以在Photoshop 中继续进行去网; 而有时去网后图像可能变得太虚, 则可以在Photoshop 滤镜中选用USM (Unsharp mask,细微层次调节) 来提高清晰度。
四、实验要求
本次实验分组进行,每组同学共同协作完成实习任务;
要求原稿选取类型包括黑白、彩色、印刷品等不同类型,对同一幅原稿在扫描时要分别设置不同的扫描参数,并比较扫描图像的差异;
仔细观察经Photoshop转换成的CMYK图像的各通道的图像,分析它们对原彩色图像各色信息的表现。
五、实验报告撰写
实验报告应包括以下内容:
1、实验的基本原理和过程
2、遇到的问题和解决方法;
3、结果分析。
实验一 直方图均衡化图像增强的计算机实现
一、实验目的
1、熟悉直方图均衡化处理的理论基础;
2、掌握直方图均衡化处理的计算机实现方法;
3、学习VC++6.0 或Matalab 的编程方法;
4、验证直方图均衡化处理理论;
5、观察直方图均衡化处理的结果。
二、实验内容和原理
1、编写一个函数计算数字图象直方图;
2、通过调用直方图计算函数实现直方图均衡化;
3、对比数字图象变化前后的直方图;
三、实验环境
硬件: PC机
操作系统: windowsXP
编程平台: MatLab 或 高级语言VC6。0
四、算法描述及实验步骤
1、 MATLAB代码:
clear all
% 一、图像的预处理,读入彩色图像将其灰度化
PS=imread(‘d:\1。jpg’); %读入彩色图像
imshow(‘PS’) ; % 显示图像
title(‘输入的彩色图像’);
imwrite(rgb2gray(PS), ‘d:\PicSampleGray.bmp’); %将彩色图像灰度化并保存。
PS=(rgb2gray(PS); %将灰度化后的数据存入数组。
%二、绘制直方图
[m,n] = size(PS); %测量图像尺寸参数
GP = zeros(1,256); % 预创建存放灰度出现概率的向量
for k=0:255
GP(k+1) = length(find(PS==k))/(m*n);
%计算每级灰度出现的概率将其存入GP中相应位置
end;
figure, bar(0:255, GP, ‘g’) %绘制直方图
title(‘源图像直方图’)
xlabel(‘灰度值’)
ylabel(‘出现概率’)
%三、直方图均衡化
S1 = zeros(1,256);
for i=1:256
for j=1:i
S1(i)= GP(j) + S1(i); % 计算Sk
end
end
S2 =round( (S1*256)+ 0。5); %将Sk归到相近级的灰度
for i= 1:256
GPeq(i) = sum(GP(find(S2== i))); %计算现有每个灰度级出现的概率
end
figure, bar(0:255, GPeq,'b') % 显示均衡化后的直方图
title(‘均衡化后的直方图')
xlabel(‘灰度值’)
ylabel(‘出现概率’)
5、调试过程
clear all
% 一、图像的预处理,读入彩色图像将其灰度化
PS=imread('C:\Users\test001\Desktop\1。jpg'); %读入彩色图像
imshow(PS) ; % 显示图像
title('输入的彩色图像');
imwrite(rgb2gray(PS), 'C:\Users\test001\Desktop\1Gray.jpg'); %将彩色图像灰度化并保存.
PS=(rgb2gray(PS)); %将灰度化后的数据存入数组.
%二、绘制直方图
[m,n] = size(PS); %测量图像尺寸参数
GP = zeros(1,256); % 预创建存放灰度出现概率的向量
for k=0:255
GP(k+1) = length(find(PS==k))/(m*n);
%计算每级灰度出现的概率将其存入GP中相应位置
end;
figure, bar(0:255, GP, 'g') %绘制直方图
title('源图像直方图')
xlabel('灰度值’)
ylabel('出现概率')
%三、直方图均衡化
S1 = zeros(1,256);
for i=1:256
for j=1:i
S1(i)= GP(j) + S1(i); % 计算Sk
end
end
S2 =round( (S1*256)+ 0。5); %将Sk归到相近级的灰度
for i= 1:256
GPeq(i) = sum(GP(find(S2== i))); %计算现有每个灰度级出现的概率
end
figure, bar(0:255, GPeq,'b') % 显示均衡化后的直方图
title(’均衡化后的直方图’)
xlabel(’灰度值')
ylabel('出现概率')
>>
五 实验结果
7、总结
实验二 贝塞尔曲线绘制实验
一.实验目的
熟悉二次贝塞尔曲线的生成算法,并能在Matalab环境下生成图形,并能熟悉三次贝塞尔曲线的生成,比较两者的异同。
二.实验内容
三次贝塞尔曲线的生成算法。
三.实验环境
Windows XP; matalab;
四.实验步骤
① 算法思想
P0、P1、P2、P3 四个点在平面或在三維空間中定義了三次方贝塞尔曲線。曲線起始於 P0 走向 P1,並從 P2 的方向來到 P3。一般不會經過 P1 或 P2;這兩個點只是在那裡提供方向資訊. P0 和 P1 之間的間距,決定了曲線在轉而趨進 P3 之前,走向 P2 方向的。 曲线的参数形式为︰
五、代码实现
5、代码实现
二次Bezier曲线代码
m_文件函数:
function bezier2(p0,p1,p2)
t=0:0.001:1;
x =( p2(1) — 2*p1(1)+ p0(1))*t。^2 +2*(p1(1)-p0(1))*t +p0(1);
y =( p2(2) — 2*p1(2)+ p0(2))*t.^2 +2*(p1(2)-p0(2))*t +p0(2);
plot([p0(1) p1(1) p2(1)], [p0(2) p1(2) p2(2)], ’b’),hold on
plot(x, y, ’r’);
end
>> bezier2([5,3], [4,15],[7,5] )
三次Bezier曲线代码:
function bezier3(p0,p1,p2,p3)
t=0:0.001:1;
x =(1—t)。^3*p0(1) + 3*t。*(1—t).^2*p1(1) + 3*t.^2.*(1-t)*p2(1)+t.^3*p3(1);
y =(1—t).^3*p0(2) + 3*t.*(1—t)。^2*p1(2) + 3*t.^2.*(1-t)*p2(2)+t.^3*p3(2);
plot([p0(1) p1(1) p2(1) p3(1)], [p0(2) p1(2) p2(2) p3(2)], ’b');
hold on;
plot(x, y, ’r');
〉〉 bezier3([6,3], [9,20],[9,2],[9,16] )
B样条曲线代码(方法一):
function Byangtiao8(p)
t=0:0。005:1;
hold on
for i=1:5
x=p(1,i)*(1/6)*(—t.^3+3*t。^2-3*t+1)+p(1,i+1)*(1/6)*(3*t.^3-6*t。^2+4)。..
+p(1,i+2)*(1/6)*(—3*t.^3+3*t.^2+3*t+1)+p(1,i+3)*(1/6)*t.^3;
y=p(2,i)*(1/6)*(-t.^3+3*t.^2—3*t+1)+p(1,i+1)*(1/6)*(3*t.^3—6*t.^2+4)。.。
+p(2,i+2)*(1/6)*(-3*t.^3+3*t.^2+3*t+1)+p(2,i+3)*(1/6)*t。^3;
plot(x,y,'k');
end
plot([p(1,1) p(1,2) p(1,3) p(1,4) p(1,5) p(1,6) p(1,7) p(1,8)], [p(2,1) p(2,2)
p(2,3) p(2,4) p(2,5) p(2,6) p(2,7) p(2,8)]);
执行:
>〉Byangtiao8([4,6,1,7,9,15,11; 0,9,11,15,15,7,6,12])
B样条曲线代码(方法二):
function Byt8(p0, p1, p2, p3, p4, p5, p6, p7)
t= 0: 0。001:1;
%m=[—1 3 -3 1; 3 —6 3 0; —3 0 3 0; 1 4 1 0];
x=p0(1)*(1/6)*(-t.^3+3*t.^2—3*t+1)+p1(1)*(1/6)*(3*t.^3-6*t。^2+4)。。.
+p2(1)*(1/6)*(—3*t。^3+3*t。^2+3*t+1)+p3(1)*(1/6)*t.^3;
y=p0(2)*(1/6)*(-t.^3+3*t.^2-3*t+1)+p1(2)*(1/6)*(3*t。^3-6*t。^2+4)...
+p2(2)*(1/6)*(-3*t.^3+3*t。^2+3*t+1)+p3(2)*(1/6)*t。^3;
%plot([p0(1) p1(1) p2(1) p3(1)],[p0(2) p1(2) p2(2) p3(2)]);
hold on;
plot(x,y,’r');
x=p1(1)*(1/6)*(-t.^3+3*t.^2—3*t+1)+p2(1)*(1/6)*(3*t.^3—6*t.^2+4)。.。
+p3(1)*(1/6)*(-3*t。^3+3*t。^2+3*t+1)+p4(1)*(1/6)*t。^3;
y=p1(2)*(1/6)*(—t.^3+3*t.^2-3*t+1)+p2(2)*(1/6)*(3*t.^3—6*t.^2+4).。。
+p3(2)*(1/6)*(-3*t.^3+3*t。^2+3*t+1)+p4(2)*(1/6)*t.^3;
%plot([p0(1) p1(1) p2(1) p3(1)],[p0(2) p1(2) p2(2) p3(2)]);
hold on;
plot(x,y,'r’);
x=p2(1)*(1/6)*(-t。^3+3*t。^2—3*t+1)+p3(1)*(1/6)*(3*t.^3-6*t。^2+4).。.
+p4(1)*(1/6)*(—3*t。^3+3*t.^2+3*t+1)+p5(1)*(1/6)*t。^3;
y=p2(2)*(1/6)*(—t。^3+3*t。^2—3*t+1)+p3(2)*(1/6)*(3*t。^3—6*t.^2+4)。.。
+p4(2)*(1/6)*(-3*t。^3+3*t.^2+3*t+1)+p5(2)*(1/6)*t。^3;
%plot([p0(1) p1(1) p2(1) p3(1)],[p0(2) p1(2) p2(2) p3(2)]);
hold on;
plot(x,y,'r');
x=p3(1)*(1/6)*(—t.^3+3*t.^2-3*t+1)+p4(1)*(1/6)*(3*t。^3-6*t。^2+4)。..
+p5(1)*(1/6)*(—3*t.^3+3*t.^2+3*t+1)+p6(1)*(1/6)*t.^3;
y=p3(2)*(1/6)*(—t。^3+3*t。^2-3*t+1)+p4(2)*(1/6)*(3*t.^3-6*t.^2+4)...
+p5(2)*(1/6)*(-3*t。^3+3*t。^2+3*t+1)+p6(2)*(1/6)*t。^3;
%plot([p0(1) p1(1) p2(1) p3(1)],[p0(2) p1(2) p2(2) p3(2)]);
hold on;
plot(x,y,’r');
x=p4(1)*(1/6)*(-t。^3+3*t。^2-3*t+1)+p5(1)*(1/6)*(3*t。^3-6*t。^2+4)。..
+p6(1)*(1/6)*(-3*t。^3+3*t.^2+3*t+1)+p7(1)*(1/6)*t。^3;
y=p4(2)*(1/6)*(-t。^3+3*t.^2-3*t+1)+p5(2)*(1/6)*(3*t。^3-6*t。^2+4)。。.
+p6(2)*(1/6)*(—3*t.^3+3*t。^2+3*t+1)+p7(2)*(1/6)*t。^3;
%plot([p0(1) p1(1) p2(1) p3(1)],[p0(2) p1(2) p2(2) p3(2)]);
hold on;
plot(x,y,’r');
plot([p0(1) p1(1) p2(1) p3(1) p4(1) p5(1) p6(1) p7(1)],[p0(2) p1(2) p2(2) p3(2)
p4(2) p5(2) p6(2) p7(2)]);
执行:
>>Byt8([0,0],[1,9],[3,9],[5,7],[6,2],[7,6],[9,5],[18,3])
展开阅读全文