MATLAB匹配按列碎开的纸片
纵向切开的纸片的拼接
2013 CUMCM_B
%% paper_cutting.m
clear, close all
clc
%% import pictures, and save into images{img_num}
[images, img_num, vertical_border] = import_data('.\img_data\pic1\'); % 批量读入图片, 在上上篇中写到.'
%% 求出任意一纸片的左侧和另一任意纸片的右侧的距离roads
roads = zeros(img_num);
header = 0;
tailer = 0;
for i = 1 : img_num
for j = 1 : img_num
if i == j
roads(i, j) = 1000;
continue
end
roads(i, j) = sum(abs(images{i}(:, end) - images{j}(:, 1)));
if roads(i, j) == 0
header = j;
tailer = i;
end
end
end
fraction_idx = zeros(img_num, 1);
fraction_idx(1) = header;
fraction_idx(end) = tailer;
for i = 1 : img_num
if count_white_chunk(images, i, 50)
fraction_idx(2) = i;
end
end
%% xiongyali method:
c = roads;
[h, w] = size(c);
c = c'; c = c(:);
Aeq = zeros(h+w, h*w);
for i = 1 : h
Aeq(i, (i-1) * w + 1 : w*i) = 1;
end
for i=1 : w
Aeq(h + i, i : w : h*w) = 1;
end
beq = ones(h+w, 1);
A = []; b = [];
[x,fval] = bintprog(c, A, b, Aeq, beq);
X = reshape(x, w, h)';
%% Get the order.
for i = 2 : img_num-1
fraction_idx(i) = find(X(fraction_idx(i-1), :) ~= 0);
end
%% connect the fractions and show it.
for i = 1 : img_num
if i == 1
connected_img = images{fraction_idx(i)};
else
connected_img = [connected_img, images{fraction_idx(i)}];
end
end
figure(1);
imshow(connected_img);
imwrite(connected_img, 'saved1.png', 'png');
title('Connected fractions.');
MATLAB匹配按列碎开的纸片的更多相关文章
- matlab 按照某列以行为单位进行排序
a=[2 1 3 21 44 3] 然后按照第一列进行排序 sortrows(a,1) ans = 1 4 2 1 3 2 4 3 如要逆序,可以逆序读矩阵即可
- Mysql正则匹配某列是否含有手机号
SELECT COUNT(1) FROM t_user WHERE user_name REGEXP ".[1][35678][0-9]{9}."; 解释: 正则中 .的意思是所有 ...
- 【matlab】生成列是0-255渐变的图像
图像大小:640×512 8位灰度图 %% 生成图像 %大小:* %类型:灰度图 %灰度值:列按照0-255渐变,故命名为column shade. clc,clear all,close all; ...
- oracle两表中的两列进行模糊匹配的方法
SELECT T2.列名,T1.列名 FROM 主表 T1, 匹配表 T2 WHERE T1.匹配列 LIKE CONCAT('%',concat(T2.匹配列,'%')); 注意: a ...
- C++ 微信多开
应用是如何判断多开 一.通过查找窗口标题或者类名来判断程序是否正在运行. 二.通过互斥对象确定程序是否运行,大多数软件都是使用CreateMutexW 判断多开的. 三.内存映射物理文件,控制多开. ...
- 我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知
面试官: 我看你的简历上写着精通MySQL,问你个简单的问题,MySQL联合索引有什么特性? 心想,这还不简单,这不是问到我手心里了吗? 听我给你背一遍八股文! 我: MySQL联合索引遵循最左前缀匹 ...
- python、matlab、c++的括号增加次序,以及图片存储方式
1 增加次序: python:(同c++多维数组) np.zeros([2,3,4]),先是按照内存空间均分为2份,每份又均分3份,最终再细分4份 2最大份,先按左分 例子:re ...
- matlab学习笔记(一)单元数组
matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x) :取最大的整数 ceil(3.18)=4,ceil( ...
- (hdu step 6.3.5)Card Game Cheater(匹配的最大数:a与b打牌,问b赢a多少次)
称号: Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
随机推荐
- Java post提交表单限制
According to Tomcat7's documentation, setting maxPostSize in Connector to a value less than or equal ...
- HTTP通过请求和响应的交换达成通信
1. 通过请求和响应的交换达成通信 首先我们来看一个HTTP请求报文: GET/index.htm HTTP/1.1 HOST : hacker.jp HTTP协议起始行开头的GET表示请求访问服务器 ...
- rownumber和rowid伪劣用法
select rownum ,deptno,dname loc from dept; select deptno,dname,loc from dept where rownum=1; select ...
- Java自学手记——servlet3.0新特性
servlet3.0出来已经很久了,但市场上尚未普遍应用,servlet3.0有三个比较重要的新特性:使用注解来代替配置文件,异步处理以及上传组件支持. 支持servlet3.0的要求:MyEclip ...
- Unity3D-Shader-人物残影效果
[旧博客转移 - 2016年1月7日 00:24 ] 前面的话 上一篇讲了一下人物边缘发光效果,链接: Unity-ShaderLab-实现X光效果,这次我们利用这个Shader来实现人物残影效果 先 ...
- 中缀表达式变后缀表达式、后缀表达式(逆波兰)求值(python版本)
定义: 中缀表达式: 在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,这种表示法也称为中缀表达式 后缀表达式: 又叫逆波兰表达式 ,不包含括号,运算符放在两个运算对象的后面,所有的计算 ...
- java三大框架介绍
常听人提起三大框架,关于三大框架,做了如下了解: 三大框架:Struts+Hibernate+Spring java三大框架主要用来做WEN应用. Struts主要负责表示层的显示 Spring利用它 ...
- 一大波jQuery事件即将来袭!
一.jQuery事件 1.focus()元素获得焦点 2.blur()元素失去焦点 3.change() 表单元素的值发生变化(可用于验证用户名是否存在) 4.click() 鼠标单击 5.dbcli ...
- 构建高并发&高可用&安全的IT系统-高并发部分
什么是高并发? 狭义来讲就是你的网站/软件同一时间能承受的用户数量有多少 相关指标有 并发数:对网站/软件同时发起的请求数,一般也可代表实际的用户 每秒响应时间:常指一次请求到系统正确响的时间(以秒为 ...
- RMAN备份到共享存储失败(win平台)
RMAN备份到共享存储失败(win平台) 之前在<Win环境下Oracle小数据量数据库的物理备份>这篇文章中,介绍了在win平台下对于小数据量的数据库的物理备份设计. 文中重点提到,强烈 ...