T1
Description
给定图像car.png和模版图像wheel.png,利用相关检测实现对car图像中的
wheel检测,具有最大相关值的位置可以解释为所检测到的wheel位置。程序的输入是图像和模版,要求:
(i)显示图像的相关值结果;
(ii)列出在图像中检测到的所有目标的(x,y)坐标。
Analysis
利用两幅图像的相关值来解决图像匹配的问题,因为把被匹配图像作为kernel,然后需要检测的图像作为pattern,相关可以用来检测和定位一个由kernel表示的pattern,被检测处pattern响应强。
具体实现
- 首先,把car和wheel两张图片读入进来,存储到两个矩阵中。
- 因为用imread函数都进来的矩阵都是uint8表示形式,相关操作的数值会比较大,容易溢出,所以把两个矩阵转换成double的表示形式。
- 可以选择用padding的方式对矩阵进行扩充,但由于这次的操作不是检测边缘,所以也可以不填充,直接用模板进行相关值计算操作。
- 相关值的计算公式为:
G[i,j]=∑ku=−k∑kv=−kH[u,v]F[i+u.j+v]
- 因为相关值可能没有十分精确地反映真正的相关程度,所以,我们进行了归一化处理,利用:
R[i,j]=(∑ku=−k∑kv=−kH[u,v]F[i+u.j+v])2(∑ku=−k∑kv=−k(H[u,v])2)×(∑ku=−k∑kv=−k(F[i+u.j+v])2) - 然后把大于0.99的坐标筛选出来,以它为中心,按照wheel图像的大小尺寸,提取出匹配矩阵出来,然后再show出来。
- 因为相关值可能没有十分精确地反映真正的相关程度,所以,我们进行了归一化处理,利用:
(i)相关值结果保存在pdf中
(ii)x的坐标从107变化到127
y的坐标从139变化到161
提取出来的图像为:
T2
Description
(i)利用randi()函数随机产生两个不等的整数,把大的值赋值给
t1(x,y)
,把小的值赋值给
t2(x,y)
.
(ii)读入图像,根据要求,如果
f(x,y)
大于
t1(x,y)
就赋值为255,小于
t2(x,y)
就赋值为0,在两者中间就保持原来的值不变。
(iii)在添加了椒盐噪声的图像上,以3x3的窗口作中值滤波。首先在矩阵上tiquchu3x3的子矩阵,然后转换成一维的向量,直接用median函数取出中值,然后用此中值替换掉3x3窗口正中心的元素。不需要做padding,直接以3x3窗口的左上角对准矩阵的左上角开始。
(iv)