把拍摄的倾斜的照片正过来

写了一个做简单的affine transformation的程序,可以做一部分现行的纠正

最终理想是用户可以自定义一堆控制点,然后用户可以调整每一个控制点的期望位置,与此同时程序就动态的显示变化后的图像

难点是 1. 控制点调整算法? 2. UI, 包括显示控制点,确定用户选中与否,选中后计算用户移动

纠正之前的部分

纠正后的部分

代码

function main
	Im=‘F:\images\DCIM\Camera\IMG_20150517_181834.jpg‘;
	I3 =imread(Im);
	I =I3(:,:,1);
	%PtIn=[2020 4; 3572 108/2; 2104 2228]‘;
	%PtOut=[2020 4; 3572 4;2020 2228]‘;
	PtIn=[807 282;1986 12; 807 1287]‘;
	PtOut=[807 282;1986 282; 807 1287]‘;
	T =my_get_affine_par(PtIn,PtOut);
	O =my_affine_trans(I, T, size(I));
	imshow(uint8(O))

%IN, OUT:	both are 2*3 matrix for 3 2d pts
%T:			2*3 matrix,[OUT(:,i);1]=[T;0 0 1]*[IN(:,i);1]
%
% [xi 	  [a1 b1 c1]  [xo]
%	yi]=  [a2 b2 c2] *[yo]
% ==>
% [xi]	 [xo yo 1 0 0 0] [a1]
% [yi] = [0 0 0 xo yo 1] [b1]
%						[c1]
%						[a2]
%						[b2]
%						[c2]
function T =my_get_affine_par(IN,OUT)
	A=[];
	B=[];
	for i=1:3
		B=[B;	OUT(:,i)];
		A=[A;	IN(:,i)‘ 1 0 0 0;	0 0 0 IN(:,i)‘ 1];
	end
	X =A\B;
	T =[X(1:3)‘;	X(4:6)‘];

%transform a image
%szO: size of out image
function O =my_affine_trans(I, T, szO)
szi =size(I);
Tinv3=inv([T;0 0 1]);
Tinv =Tinv3(1:2,:);

O=zeros(szO);
for y=1:size(O,1)
	for x=1:size(O,2)
		XYi=Tinv*[x;y;1];
		xi=int32(XYi(1));
		yi=int32(XYi(2));
		if xi>0 & xi<=szi(2) & yi>0 & yi<=szi(1)
			O(y,x) =I(yi,xi);
		end
	end
end
时间: 2024-11-06 22:31:10

把拍摄的倾斜的照片正过来的相关文章

原来这么拍(48)——校园人像拍摄

tips1:人像拍摄可以抓拍来保证人物表情动作自然不僵硬 tips2:对模特有爱,才可以拍的更好 tips3:大场景拍摄人像时 可以让模特活跃起来 让照片看起来比较活泼 跳啊,转圈,俯身向镜头笑等 tips4:拍摄时可进行一些角度的变换 避免出现一些不必要的物体进入画面 tips5:拍摄无路人的照片可使照片看起来不旅游化 如果阳光太强烈的话,先闭上眼睛然后等摄影师口令之后再睁开眼睛,这也是最常用的手法 利用一个低角度和桥的纵深感来拍,用85 tips6:利用长焦镜头拍摄可使画面中纵深感更明显 t

iOS 开发之照片框架详解

一. 概要 在 iOS 设备中,照片和视频是相当重要的一部分.最近刚好在制作一个自定义的 iOS 图片选择器,顺便整理一下 iOS 中对照片框架的使用方法.在 iOS 8 出现之前,开发者只能使用 AssetsLibrary 框架来访问设备的照片库,这是一个有点跟不上 iOS 应用发展步伐以及代码设计原则但确实强大的框架,考虑到 iOS7 仍占有不少的渗透率,因此 AssetsLibrary 也是本文重点介绍的部分.而在 iOS8 出现之后,苹果提供了一个名为 PhotoKit 的框架,一个可以

macOS Sierra中的自动照片识别

周末把mac mini升级到了macOS Sierra."照片"应用的自动分类是个很有意义的升级,因为这台mini在家里主要的实用功能除了上网就是归档照片.归档照片总是一件耗时的事情,尤其是对于经常旅行又热爱拍照的人来说,照片的数量增长很快,而人脸识别等图像识别技术可以让这件事变得简单很多. 对于人物的识别,苹果做得还可以,我的照片,大部分都是闺女,闺女为画面中主要部分的照片基本都识别到了,但有一个例外,一些戴棒球帽的照片被单独分类了,这是一个明显的识别失误的例子,帽子,本应该比发型更

安卓手机误删除照片恢复方法最强版(适应小米、华为等)

混迹论坛多年经常看到不少小白抱怨误删除手机照片,最后无法恢复的困扰.一直不明白为什么这个问题要费那么多时间解决,真正要处理的话可以有很多方法,无论是事先备份还是事后恢复,都是有一套方法在的,花费2分钟就可以解决的问题,为什么要到处发帖求助最后还无法解决呢? 所以干脆花了点时间,总结了下手机误删除照片如何恢复的方法,希望可以一次性帮助解决所有问题吧. PS 所有方法都适用于安卓和苹果手机,具体操作细节上可能不同,文中会一一说明.篇幅较长所以只要找到你需要的部分就好,基本大纲如下: 手机数据备份和恢

Android开发之获取相册照片和获取拍照照片

在Android的开发过程中,我们可能会读取手机里面的照片或者通过相机拍摄获取照片,这是两种常用的获取图片的方式,在做项目过程中也会经常遇到,下面来介绍一下这两种获取方式.. 1.从本地相册获取照片: 一般就是写出这个方法 protected void getImageFromAlbum() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*");//相片类型 startActivityFo

介绍产品的技巧

FABE法则——特优利证   介绍产品是一个促销员的最基本的技能,那么,介绍产品有哪些技巧呢? 首先应该了解产品的卖点,了解产品的基本卖点和附加卖点. 其次,应该了解特.优.利.证(FABE)的产品介绍方法,销售人员运用FABE的介绍方法,就能针对客户的需求,进行简洁.专业的产品介绍. 什么是FABE?为什么要使用FABE的介绍方法呢?在这里,我们也要了解客户的需求,即在介绍产品的时候,客户关心的是什么?客户心中存在什么样的问题?下面我们先来看看这个问题. 1.客户心中的问题——FABE的理论基

Unity VR全景漫游

软件环境 Unity5.3.1 X64 http://unity3d.com/cn/get-unity/download/archive PTGui[可选] 把全景图转成6个立方小图 http://www.ptgui.com/download.html Google VR SDK For Unity https://github.com/googlevr/gvr-unity-sdk 全景图片一张 (自行拍摄或者google查找)   前言 最近VR搞的那火,就学习就落伍啦,所以有空闲时间研究下相

开发Adobe AIR移动应用程序的考虑事项

http://www.adobe.com/cn/devnet/air/articles/considerations-air-apps-mobile.html Adobe AIR 经过发展演进,已经超越了最初作为桌面应用程序平台的目标.如今,它支持跨移动.桌面和数字家用设备的独立应用程序开发.AIR 是一种极富吸引力的开发平台,部分原因在于其广泛的覆盖面.与此同时,这些环境中的每一种环境都给移动应用程序开发与设计带来的独特的要求. 举例来说,移动应用程序常常是短期运行的.它们需要一种可在较小的屏

华硕鹰眼ZenFone Zoom推动潮流:比肩专业相机几率几何?

基于摩尔定律和电子元器件的更新迭代趋势,越来越多的智能手机厂商在手机硬件.参数配置方面的追逐力度也日趋加强,对于大多智能手机默许的这种举动,也有少部分厂商表露出了完全不同的做法.在后者身上,它们更侧重于通过提升产品在某个细分领域的优势竞争,从而赢得消费者和市场的选择与认可,而话说在去年年末推出的华硕鹰眼ZenFone Zoom专业拍照手机,所走的道路正是这种思维模式. 在目前智能手机拍照已经满大街的今天,大部分厂商对摄像头的潜力挖掘都已经到了让人叹为观止的地步,而这款新型的华硕鹰眼ZenFone