待校正图像与参考图像之间的仿射变换关系可以用下式表示:

其中(x,y)表示待校正图像像素点位置坐标,(X,Y)表示参考图像像素点位置坐标。

几何校正函数代码:

function correctedImage = GeometricCorrection(originalImage_path,referenceImage_path)
%几何校正
originalImage = im2double(imread(originalImage_path));
referenceImage = im2double(imread(referenceImage_path));
figure('Name','请选择3处对应点'),
subplot(1,2,1);
imshow(originalImage);
title('原始图像');
subplot(1,2,2);
imshow(referenceImage);
title('参考图像');
[x,y] = ginput(6);
close all;
x1 = x(1);X1 = x(2);x2 = x(3);X2 = x(4);x3 = x(5);X3 = x(6);
y1 = y(1);Y1 = y(2);y2 = y(3);Y2 = y(4);y3 = y(5);Y3 = y(6);
T = [1,1,1;X1,X2,X3;Y1,Y2,Y3];
a = [x1,x2,x3]/T;b = [y1,y2,y3]/T;
a0 = a(1);a1 = a(2);a2 = a(3);b0 = b(1);b1 = b(2);b2 = b(3);
[rows_ref,cols_ref,channel_ref] = size(referenceImage);
[rows_ori,cols_ori,~] = size(originalImage);
correctedImage = zeros([rows_ref,cols_ref,channel_ref]);
for channel = 1 : channel_reffor row = 1 : rows_reffor col = 1 : cols_reftempx = a0+a1*col+a2*row;tempy = b0+b1*col+b2*row;if tempx>=1 && tempx<=cols_ori && tempy>=1 && tempy<=rows_oricorrectedImage(row,col,channel) = (tempx-floor(tempx))*(tempy-floor(tempy))*originalImage(ceil(tempy),ceil(tempx),channel)+(tempx-floor(tempx))*(ceil(tempy)-tempy)*originalImage(floor(tempy),ceil(tempx),channel)+(ceil(tempx)-tempx)*(tempy-floor(tempy))*originalImage(ceil(tempy),floor(tempx),channel)+(ceil(tempx)-tempx)*(ceil(tempy)-tempy)*originalImage(floor(tempy),floor(tempx),channel);endendend
end
end

演示代码:

%% 几何校正
originalImage_path = '...';
referenceImage_path = '...';
correctedImage = GeometricCorrection(originalImage_path,referenceImage_path);
imshow(correctedImage);

运行步骤:

运行程序后会出现以下窗口,在左图中选取一点,然后在右图中选择对应点,选完三组对应点即可。

几何校正结果如下图所示:

Matlab实现图像简单的几何校正相关推荐

  1. 图像找茬 matlab,数字图像处理、数学形态学、MATLAB GUI实现简单找茬软件

    0.简介 这个小作品是我的数字图像处理课程设计,应用基本的图像处理知识与MATLAB的基本脚本编程,实现一个简单的找茬软件.软件实现过程中使用到的找茬游戏图片来源有"梦幻找茬".& ...

  2. 神经网络学习笔记2.2 ——用Matlab写一个简单的卷积神将网络图像分类器

    配套视频讲解 10分钟学会matlab实现cnn图像分类_哔哩哔哩_bilibili 10分钟学会matlab实现cnn图像分类 整体代码 链接:https://pan.baidu.com/s/1bt ...

  3. matlab 读取照片imread,利用matlab读取图像

    怎样用matlab读取20张图片并依次展示出来 指定路径下 单个文件夹data中所有图像 P = '.\data\';% 图像文件夹路径 img_path_list = dir(strcat(P,'* ...

  4. matlab实现频域率滤波,基于Matlab的图像的频域滤波实现及研究.doc

    摘要:图像的频域滤波是图像增强的一种方法.图像增强是图像处理的方法之一,有频率域法和空间域法.频率域法把图像看成一种二维信号,对其进行二维傅里叶变换的信号增强,采用低通滤波法可以去掉图像的噪声:采用高 ...

  5. matlabrobert锐化_基于Matlab的图像锐化的研究

    杨虹++吴萌 摘要:在图像处理时,常常需要对图像进行平滑,但是平滑后图像的轮廓往往变的有些模糊,为了改变这一影响,需要对图像进行锐化处理,使图像边缘信息呈现出来.对几种图像锐化的方法进行研究,并且对S ...

  6. 基于MATLAB的图像融合设计

    基于MATLAB的图像融合设计 摘 要 图像融合能够将不同类型传感器获取的同一对象的图像数据进行空间配准.并且采用一定的算法将不同类型的传感器获取的同一对象的图像数据所含用的信息优势或互补性有机地结合 ...

  7. 基于matlab的图像形状与分类毕业设计(含源文)

    基于matlab的图像形状与分类 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务 ...

  8. matlab用游程编码压缩图像,基于Matlab的图像压缩编码

    开发与应用 计算机与信息技术 ·23· 基于 Matlab 的图像压缩编码 杨晓 李悦 (贵州大学 计算机与信息学院,贵州 贵阳 550025) 摘 要 本文描述了图像编码压缩方法的主要分类,介绍了每 ...

  9. 基于MATLAB的图像去雾系统

    基于MATLAB的图像去雾系统 (一)图像去雾基础原理 1.雾霭的形成机理 雾实际上是由悬浮颗粒在大气中的微小液滴构成的气溶胶,常呈现乳白色,其底部位于地球表面,所以也可以看作是接近地面的云.霭其实跟 ...

最新文章

  1. AI 技术升级,这一新方法遏制在线语言骚扰
  2. 朴素贝叶斯算法应用实例
  3. 【读书笔记《Android游戏编程之从零开始》】17.游戏开发基础(游戏适屏的简述和作用、让游戏主角动起来)...
  4. 检查Lync SRV记录是否正常
  5. SharePoint 2013 APP 开发示例 (三)使用远程的web资源
  6. 如何解决华为手机“杀后台”严重的情况呢?
  7. Entity Framework 笔记(一)
  8. busybox的使用
  9. AD 20中文软件安装教程
  10. 计算机及网络维护工程师专业问题
  11. 塑料周转筐生的材料配方详解
  12. Springboot RabbitMQ
  13. 清理c盘爆满告急,C盘清理
  14. 打电话降噪蓝牙耳机推荐,适合通勤使用的降噪蓝牙耳机分享
  15. 各大手机厂商快应用入口
  16. 通信网基础作业答案整理
  17. 欧洲语言共同参考框架 c1,雅思成绩与欧洲语言共同参考框架的对应关系
  18. Visual Studio 2019 v16.10 和 v16.11 Preview 1 现已推出!
  19. 什么是JTAG及JTAG接口简介
  20. Maemo 中交叉编译D-BUS 1.2.1

热门文章

  1. Windows文件管理器异常无响应,访问共享文件导致无响应的处理办法
  2. 网络上各家分享CAD图纸如何分辨好坏呢?
  3. 中国IT咨询公司的机会在哪里?
  4. 国际物流专线是什么意思?
  5. 利用opencv带你玩转人脸识别-上篇(读取图片,灰度转换,尺寸修改,绘制矩形快速入门)
  6. python文件查重_文件查重 我使用的是面向局部敏感的最小哈希签名的方法进行文档查重 联合开发网 - pudn.com...
  7. exit abort return 区别
  8. DBA在项目中的角色
  9. chrome所有页面崩溃【转载】
  10. bugzilla 安装