2019-07-29 22:47:05 qq_33668060 阅读数 285

傅立叶变换中的目标定位 and 卷积应用中的目标特征识别
写这篇文章的感觉就是一句话:我想验证:**时域中的卷积操作等于频域中的乘积,也就是这个公式:f*g(x) = F(x)*G(x),**这句话。
直接上代码:每一行代码都有注释,有兴趣的小伙伴,可以仔细瞧一瞧。

clear all; clc; close all
bw = imread('text.png');
a = bw(32:45, 88:98); %从bw图像中提取一个a字符;
figure;imshow(bw);title('原图')
figure;imshow(a);title('识别的字母a')
%利用傅立叶变换定位text.png中a的位置
bwf = fftshift(fft2(bw));  %对bw进行二维离散傅立叶比变换,并中心化
figure;imshow(uint8(bwf))
%计算相关系数  ,,, 该处的目的与时域中的卷积性质一样
C1 = real(ifft2(fft2(bw) .* fft2(rot90(a,3), 256, 256))); %将bw的傅立叶变换与a旋转270度后的傅里叶变换相乘,检测竖直方向上a的位置
C2 = real(ifft2(fft2(bw) .* fft2(rot90(a,2), 256, 256))); %将bw的傅立叶变换与a旋转180度后的傅里叶变换相乘,检测水平方向上a的位置
figure;
subplot(121);imshow(C1,[]);title('检测竖直方向上a的位置处理后的图片')
subplot(122);imshow(C2,[]);title('检测水平方向上a的位置处理后的图片')
max(C1(:)) %计算C1的最大值
max(C1(:)) %计算C2的最大值
thresh = 60; %设定阈值,该阈值属于经验值,是根据max(C1(:))和max(C2(:))的值设定的
C1 = C1>thresh;
C2 = C2>thresh;
figure;
subplot(121);imshow(C1,[]);title('设定阈值为60处理后检测竖直方向上a的图片')
subplot(122);imshow(C2,[]);title('设定阈值为60处理后检测水平方向上a的图片')
C = C1+C2; %将处理后的C1和C2相加,得到竖直和水平方向的a的位置
figure;imshow(C,[]);title('采用傅立叶变换定位到图片中所有a的位置')
[m,n] = size(C);

%输出a点的个数,以及位置
b=0
for i=1:m
    for j=1:n
        if C(i,j) == 1
            i,j,C(i,j)
            b = b+1;
        end
    end
end


%使用时域中的卷积,验证:时域中的卷积等于频域中的乘积
a = double(a);
bw = double(bw);
D1 = conv2(bw, rot90(a, 2), 'same');
D2 = conv2(bw, rot90(a, 3), 'same');
D = D1+D2;
max(D1(:))
max(D2(:))
figure;
subplot(121);imshow(D1,[]);title('检测竖直方向上a的位置处理后的图片')
subplot(122);imshow(D2,[]);title('检测水平方向上a的位置处理后的图片')

thresh = 60;
D1 = D1>thresh;
D2 = D2>thresh;
D = D1+D2;
figure;
subplot(121);imshow(D1,[]);title('设定阈值为60处理后检测竖直方向上a的图片')
subplot(122);imshow(D2,[]);title('设定阈值为60处理后检测水平方向上a的图片')

figure;
subplot(121);imshow(C,[]);title('采用傅立叶变换定位到图片中所有a的位置')
subplot(122);imshow(D,[]);title('采用卷积操作定位到图片中所有a的位置')

注:‘text.png’是MATLAB自带的一张图片,目的是识别图片中的字母‘a’。
结果:
原图:
在这里插入图片描述
截取的a的图片:
在这里插入图片描述
傅立叶变换:
在水平和竖直方向上进行傅立叶变换后的图片:
在这里插入图片描述
阈值为60滤波之后的图片:
在这里插入图片描述
a定位的结果:
在这里插入图片描述
卷积操作:
在水平和竖直方向上进行卷积操作后的图片:
在这里插入图片描述
阈值为60滤波之后的图片:
在这里插入图片描述
a定位的结果:与傅立叶变换的对比
在这里插入图片描述
从上面的操作结果来看,两种实现过程得到的结果一致。调皮一下:证明书上没有骗人,嘿嘿,,,。。。

2018-12-28 15:12:21 qq_36251561 阅读数 453

粗定位,又称简单模板匹配,是一种在工业图像处理上最常见的方法。该方法精确度高,识别时间短。

他的一个最大的好处就是能够在目标位置不确定的情况下,粗略的定位目标。因此该方法多使用于背景复杂、目标位置不固定、但检测目标清晰的情况下。

在这里主要以Opencv的方式(cvMatchTemplate)说明。

1.创建模板图像

     一般情况下,采用ROI的方式从原图上将模板图像抠出。存成文件的形式,这样在软件下次打开的时候就不需要再去学习。

2.确定定位区域

cvMatchTemplate

Cvnormalize

CvminMaxLoc

具体的代码如下(随手Copy来的,具体的函数定义和使用方法其他人博客里有,我就不多说了)

    Mat SrcImg;//原图像
    Mat MdoImag;//模板图像
    Mat result;//结果
   
    //这部分是有个公式固定好的
    int result_cols = img.cols - templ.cols + 1;
    int result_rows = img.rows - templ.rows + 1;
    result.create(result_cols, result_rows, CV_32FC1);
   
    matchTemplate(img, templ, result, CV_TM_SQDIFF_NORMED);
    normalize(result, result, 0, 1, NORM_MINMAX, -1, Mat());
    double minVal = -1;
    double maxVal;
    Point minLoc;
    Point maxLoc;
    Point matchLoc;
    minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc, Mat());
    matchLoc = minLoc;
    
    rectangle(img, matchLoc, Point(matchLoc.x + templ.cols, matchLoc.y + templ.rows), Scalar(0, 255, 0), 2, 8, 0);

在这里,我们最终能够得到匹配度和匹配矩形区域,一般情况下可以选取匹配矩形区域的中心点作为一个最佳匹配点。然后控制匹配度的大小用来返回匹配成功还是失败。
3.安装最佳匹配点从新生成检测区域

在得到最佳匹配点之后,我们可以用这个点去做二次ROI,然后就能更加精确的去做精确定位。

2018-01-28 12:58:58 baigalxy 阅读数 1372

引言

目标定位是图像处理或计算机视觉系统(如目标检测与分类,证件识别等)的第一步。任何计算机视觉系统都显性或隐性的包含着目标定位的步骤。目标定位的方法有传统方法和基于卷积神经网络的深度学习方法,本文主要讨论后者。深度学习方法有更好的鲁棒性(robustness),对各种问题实现形式统一,无需人为设定参数,无需太多的图像处理知识等优点。

问题的定义

目标定位解决的是在一张图像中找到我们感兴趣的目标的位置,用的最多是(x,y,width,height)形式的定位,除此之外还有矩形目标的四个顶点形式以便后续通过透视变化矫正形变。

解决方案

卷积层抽特征

全连层目标回归

定义欧式距离损或IoU损失函数

最小化损失函数

优化

在解决问题的前提下优化网络以实现最小的CPU消耗,最少的内存占用是至关重要的。

参考

https://github.com/tensorflow/models/tree/master/research/object_detection

https://en.wikipedia.org/wiki/Object_detection

https://www.quora.com/Convolutional-Neural-Networks-What-are-bounding-box-regressors-doing-in-Fast-RCNN

https://www.quora.com/How-can-I-design-a-bounding-box-regressor-using-CNN


2018-07-17 17:18:47 M_Z_G_Y 阅读数 1229

目标检测和识别发展史:

目标检测,通俗的理解其目的是定位目标,并确定目标位置及大小。相比于图像目标检查,视频检测是比单张图片检测多了时间上下文的信息;相比于传统目标检测,深度学习目标检测算法越来越成熟

https://www.cnblogs.com/houjun/p/8424893.html

https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html

https://blog.csdn.net/Julialove102123/article/details/79520473

图像检索发展史:

上:https://mp.weixin.qq.com/s/sM78DCOK3fuG2JrP2QaSZA

下:https://mp.weixin.qq.com/s/yzVMDEpwbXVS0y-CwWSBEA

持续更新中......

2019-03-04 14:46:05 Xin_101 阅读数 114

1 图像处理分类

1.0 图像分类(classification)

计算机提取给定图像中物品的特征,输出物品的种类,如向计算机一张含有汽车的图片,计算机可判断出该图中的物品为汽车.
参见博客:(三)基于Tensorflow设计VGGNet网络训练CIFAR-10图像分类
在这里插入图片描述

图1.0 CIFAR图像分类

1.2 图像分类和定位(classification&localization)

在图像分类的基础上,识别图中的物品的位置,即标注出物品在图中的位置,单目标分类和定位.
在这里插入图片描述

图1.2 图像分类和定位

1.3 目标检测(object detection)

目标检测是在图像分类和定位的基础上,标注出图像中所有物品的分类,即多目标分类和定位.
在这里插入图片描述

图1.3 多目标分类和定位

1.4 语义分割(semantic segmentation)

图像中的"语义"指图像内容,分割是在像素级别上对图像进行分类和定位,识别出图像中的不同物品,分割出不同物品,同种物品标注为一类.

在这里插入图片描述

图1.4 语义分割

1.5 实例分割(instance segmentation)

在语义分割的基础上,对同类的物品进行二次处理,将同种物品分割为独立的对象.
在这里插入图片描述

图1.5 实例分割

2 图像目标检测方法

2.1 时间简史

在这里插入图片描述

图2.1 图像检测发展时间轴

2.2 方法概述

2.2.1 传统方法

如图2.1所示,传统图像目标检测,利用不同的尺寸,不同比例的滑动窗口穷举所有可能的图像目标,代表算法有VJ(Viola-Jones)检测算法,HOG(Histogram of Gradient)算法,DPM(Deformable Parts Model).
在这里插入图片描述

图2.2 滑动窗口

2.2.2 深度学习:目标推荐(Object Proposal)

目标推荐方法,在图像上搜索潜在目标,将该目标作为输入进行处理.其中,推荐方法分为四类,如下展示,其中,经典算法有R-CNN,SPPNet,Fast-RCNN, Faster-RCNN, Feature Pyramid Networks(FPN).

  • 第一类
    将图片全部打散,再聚合,聚合方法有三种,即依据定义的距离进行聚合;随机初始化种子点,然后分割,多次循环,定义特征进行排序,完成聚合;利用现有方法快速分割,利用边缘信息进行聚合.
    在这里插入图片描述
图2.3 先破后立
  • 第二类
    通过分割,计算生成大量窗口,并对窗口进行打分,过滤低分窗口,其中Bing方法利用训练简单的分类其通过类似滑动窗口的方式过滤候选框,快速识别;EdgeBoxes方法通过计算窗口内边缘个数打分,排序,获取目标.
    在这里插入图片描述
图2.4 窗口打分机制
  • 第三类
    基于卷积神经网络(CNN)提取图像特征,对候选框进行打分,获取目标标识.
    在这里插入图片描述
图2.5 CNN系列
  • 第四类
    采用基线模型,利用Uniform,Gaussian, Sliding windowshe Superpixels作为基线.

2.2.3 深度学习:一体化卷积网络

该方法将输入的图像作为一个整体,不将图片进行"打碎",区别于Object Proposal,通过对图片进行划分栅格,在栅格中检测物体,计算物体坐标和置信度,预测物体分类,经典算法有YOLO, SSD, Retian-Net.
在这里插入图片描述

图2.6 栅格预测

3 总结

(1) 图像语义分割是对不同物品的分割,如图1.4所示,即对物品分类,同类物品标为一类.
(2) 图像实例分割,是对图像中的各个物品进行标注,如图1.5所示,同种物品会被分割,即分割图像中所有物品.
(3) 图像目标检测传统方法有:VJ,HOG, DPM;深度学习方法有两个分支,目标推荐和图像一体化.
(4) 图像目标检测方法归纳,表3.1.

序号 分类 方法
1 传统 VJ, HOG, DPM
2 深度学习:图像推荐 Overfeat, R-CNN, SPPNet, Fast-RCNN, Faster-RCNN, Feature Pyramid Networks
3 深度学习:图像一体 YOLO, SSD, Retina-Net

[参考文献]
[1]https://www.jianshu.com/p/710799b985ef
[2]https://blog.csdn.net/qq_39295044/article/details/79796663
[3]https://blog.csdn.net/sinat_35496345/article/details/79609529
[4]https://blog.csdn.net/qq_38906523/article/details/79971817


没有更多推荐了,返回首页