数字图像处理作业
解:
4 链码: 8 链码: 4 链码微分: 8 链码微分: 归一化 4 链码微分: 归一化 8 链码微分: 32223301000301211022 544660107023144 30010113003111303201 702021771216301 00101130031113032013 017020217712163
Image_result=Image_division(Image_gray,97,97); figure,imshow(Image_result); title('´¦Àíºó¶þÖµ»¯Í¼Ïñ');
%输出二进制处理图像
%分块阈值分割处理
图像分块函数 Image_division():
function Image_result = Image_division(Image_gray,row_space_argument,col_space_argument) row=size(Image_gray,1); col=size(Image_gray,2); row_space=row_space_argument; col_space=col_space_argument; row_num=round(row/row_space); col_num=round(col/col_space); %区域分割 t1=(0:row_num-1)*row_space+1; t2=(1:row_num)*row_space; t3=(0:col_num-1)*col_space+1; t4=(1:col_num)*col_space; for i=1:row_num for j=1:col_num t1(i)=isboundary(t1(i),row); t2(i)=isboundary(t2(i),row); t3(i)=isboundary(t3(i),col); t4(i)=isboundary(t4(i),col); x=t1(i):t2(i); y=t3(j):t4(j); if(y>80) temp = Image_gray(x,y); Image_result(x,y)=Image_handle(temp); else Image_result(x,y)=1; end end end end %对于边界的处理,全为1 %块行起始坐标 %块行终止坐标 %块列起始坐标 %块列终止坐标 %原始矩阵行数 %原始矩阵列数 %行间隔 %列间隔 %行分割块数 %列分割块数
3)
效果展示:
8
数字图像处理
2011 年 10 月 31 日
9
6
数字图像处理
主程序模块:
Image_original=imread('HW2.jpg'); figure,imshow(Image_original); title('Ô-ʼͼÏñ');
%输出原始图像 %转化为灰度图 %读取图像文件
2011 年 10 月 31 日
Image_gray=rgb2gray(Image_original);
解:
(1) 如下图所示:
S 面积=5*9-8=37(单位正方体的面积)
2
数字图像处理 (2)
2011 年 10 月 31 日
根据网上搜索资料,目前比较流行的是基于 Freeman 链码的图像中多 个区域面积的计算方法:
算法 基于 Freeman 4-链码的目标面积计算 step1 把目标面积变量 area 设为 0,把起始点的纵坐标值 y0 赋给变 量 y。 Step2 对每一个链码的元素(值 0,1,2,3)执行
解:
(a)有影响,但影响不同。将最高位置 0,直方图中 128~255 的灰度数据叠加进 0~ 127 的区域内,对对比度的影响的也较大;将最低位置 0,直方图中相邻的两格合并, 但总体影响很小,对比度影响也较小。 (b)均衡化只是把峰拉伸了,不过峰值却并未改变,因此直方图不能变成平坦的。
5
数字图像处理
Image_2bw_temp=im2bw(Image_gray,level); %转化为二进制图像 Image_2bw=double(Image_2bw_temp); end
图像分块越界函数 isboundary ():
function temp = isboundary(temp,stdard) if (temp >= stdard) temp = stdard; end end
算法 基于 Freeman 8-链码的目标面积计算 Step1 初始化,A=0, i=1。 Step2 对每一个链码的元素执行
Step3 结束。 算法 基于三角形的目标面积计算 Step1 计算出所有轮廓点的坐标,即 Step2 初始化,A = 0,i = 1。 Step3 对每一个链码元素执行 Step4 结束。 3. 请将下面的图和其直方图对应起来:
2. 假 定 4- 链 码 从 左 下 角 开 始 , 方 向 规 定 如 下 图 所 示 。 所 得 编 码 是 11100010030003332212223222 (1) 画出链码表示的图形,求此链码所表示的感兴趣区的面积; (2) 如何不画图而直接根据编码求面积(可以选用程序流程图、程序说明或者 数学公式来表示)。
清华大学自动化系
数字图像处理
第二次作业
ZHT 张海涛 2008011535
2011 年 10 月 31 日
数字图像处理
2011 年 10 月 31 日
1. 写出描述下图中目标体(灰色)边界的 4 链码,8 链码,4 链码微分,8 链码 微分,归一化 4 链码微分,和归一化 8 链码微分。图中"+"给出链码的起始 点。
4
数字图像处理
2011 年 10 月 31 日
解:
(a)对应(e) ; (b)对应(g) ; (c)对应(f) ; (d)对应(h) 。
4. 图中白色代表位于本底的象素,其余代表前景象素。本底象素和前景象素之 间的距离是无限大。求: (a) 左上角点 p 和右下角点 q 之间的按城市街道距离和棋盘格距离计算的最 短路径长度。 (b) 前景的 8 连通区和 4 连通区的个数以及相应的背景连通区的个数。 (注意, 背景区不以打格的地方为限,不是前景的地方即为背景)
2011 年 10 月 31 日
编程题
目的:通过实际问题熟悉图像分割的理论和方法 内容:文字识别是图像处理中的一种典型应用,在大多数文字识别算法中,首先需要将文本 从背景中分离出来,以便进行倾斜校正和字符分割,因此分割的过程很重要。然而在实际应 用中,我们得到的经常是下图所示那样的图像,存在光照不足,阴影…… 请利用图像分割的理论和方法,对该图像进行二值分割处理,实现前景文字与背景的分离。
解:
(a)p 与 q 之间的城市街道距离:21 P 与 q 之间的棋盘格距离:14 (b)前景的 8-连通区个数:1;相应的背景 4-连通区个数:10; 前景的 4-连通区个数:9;相应的背景 8-连通区个数:4;
5. 请解释一般情况下: (a) 用 8 比特来表示灰度图的灰度,如果将最高位或者最低位都置 0,对该 图的直方图以及对比度是否产生影响?如果有影响,请说明。 (b) 为什么数字图像经直方图均衡化之后,直方图仍不能变成很平坦的。
3
数字图像处理
ห้องสมุดไป่ตู้
2011 年 10 月 31 日
switch (code) { case 0: area = area + y break; case 1: y = y + 1; break; case 2: area = area - y; break; case 3: y = y – 1; break; } Step3 如果所有的边界链元素都被处理过了,则目标面积在被保存在 变量 area 里。
实验平台:
操作系统:Windows7 编程平台:MATLAB20011a
任务内容:
1) 原理: 图像分割方法选取: 全局阈值分割; 阈值选取: 为简单的中值, Level
Max Min ; 2
2)
分块全局: 但由于光线照明不足,阴暗等原因,全局的阈值在原始图像较暗的区域无 法有效的分离,故采用将图片分割成许多小块,每块用全局阈值分割; 修正: 由于图像最左侧空白部分,用中值作为阈值二分化,始终存在低灰度值的情况, 所以对于这部分,在进行分块全局阈值分割时,单另处理,全部赋值为 1,即只作为背 景. 代码及其说明:
7
数字图像处理
阈值生成及二分化函数 Image_handle():
function Image_2bw = Image_handle( Image_gray )
2011 年 10 月 31 日
Image_max=double(max(max(Image_gray))); %最大值并输出双精度值 Image_min=double(min(min(Image_gray))); %最小值并输出双精度值 level=((Image_max+Image_min)/2)/255; %获得最佳阈值