zoukankan      html  css  js  c++  java
  • 数字图像处理---图像配准

    图像配准是数字图像处理的一种重要应用,用于对齐两幅或多幅相同场景的图片。

    图像配准需要输入图像与参考图像。输入图像是我们希望变换的图像,参考图像是想要配准输入图像的图像。如:

    图像配准的主要方法是使用约束点,输入图像产生输出图形的特定变换通常是不知道,所以需要估计变换函数,而估计变换函数问题是建模问题之一。

    基于双线性近似的简单模型:

    x = c1v + c2w + c3vw + c4;

    y = c5v + c6w + c7vw + c8;

    (v,  w)和(x, y)分别是输入图像和参考图像中约束点的坐标。如果在两幅图像中有四对相应的约束点,则可以解出8个未知参数。这样构成简单模型,从而可以把一幅图像的像素变换为另一幅图像的像素位置。

    当然可以选择更复杂的模型,如最小均方算法等。

    图像配准示例代码:

    1、读入参考图像和要配准的输入图像

    I_base = imread('D:图像处理imagelena1.jpg');
    I_in = imrotate(I_base,30);
    subplot(121)
    imshow(I_base(:,:,1))
    title('参考图片')
    subplot(122)
    imshow(I_in(:,:,1))
    title('输入图片')

    结果:

     

    2、标准基准点对,将其保存至工作空间。

    利用matlab提供的cpselect函数可以交互式地选择基准点。在命令行中按照以下方式调用cpselect启动交互工具

    >>  cpselect(I_in(:,:,1),I_base(:,:,1));

    在该control point select窗口中,点击tool里面的add point一项进行手工标注点(交互式标点),然后在file菜单里export  points to workspace 即可输出表定点的坐标位置。

    注意:调用cpselect()函数要将需要配准的图像作为第一参数,将基准图像作为后一个参数。并且cpselect只接受灰度图像,如果需要处理RGB彩色图像,可以只给CPselect函数传递一个图像的层。

    根据之前得到的控制点对坐标,利用cp2tform函数可以计算变换的参数。将基准点对作为输入传递给cp2tform,选择一种适当的变换类型,cp2tform函数就能确定该类型变换所需的参数,实际上相当于一种数据拟合。cp2tform函数寻找能够拟合控制点对的变换参数,返回一个TFORM的结构的几何变换结构,其中包括几何变换的类型和参数

    tform = cp2tform(movingPoints1,fixedPoints1,'affine');
    I_out = imtransform(I_in,tform);
    figure
    subplot(121)
    imshow(I_base);
    title('参考图像');
    subplot(122)
    imshow(I_out);
    title('输出图像');

    最终结果:

    转载于:http://blog.csdn.net/vicie414/article/details/41577241

  • 相关阅读:
    数据结构与算法20170804
    设计模式之抽象工厂模式20170803
    设计模式之建造者模式20170802
    设计模式之工厂方法模式20170801
    设计模式之中介者模式20170731
    设计模式之门面模式20170728
    设计模式之适配器模式20170727
    设计模式之装饰模式20170726
    AndroidStudio 开发JNI
    NDK开发: 打印C代码的调试信息Log
  • 原文地址:https://www.cnblogs.com/MrZheng9511/p/register.html
Copyright © 2011-2022 走看看