纵向切开的纸片的拼接

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匹配按列碎开的纸片的更多相关文章

  1. matlab 按照某列以行为单位进行排序

    a=[2 1 3 21 44 3] 然后按照第一列进行排序 sortrows(a,1) ans = 1 4 2 1 3 2 4 3 如要逆序,可以逆序读矩阵即可

  2. Mysql正则匹配某列是否含有手机号

    SELECT COUNT(1) FROM t_user WHERE user_name REGEXP ".[1][35678][0-9]{9}."; 解释: 正则中 .的意思是所有 ...

  3. 【matlab】生成列是0-255渐变的图像

    图像大小:640×512 8位灰度图 %% 生成图像 %大小:* %类型:灰度图 %灰度值:列按照0-255渐变,故命名为column shade. clc,clear all,close all; ...

  4. oracle两表中的两列进行模糊匹配的方法

    SELECT T2.列名,T1.列名  FROM 主表 T1, 匹配表 T2    WHERE  T1.匹配列  LIKE CONCAT('%',concat(T2.匹配列,'%')); 注意:  a ...

  5. C++ 微信多开

    应用是如何判断多开 一.通过查找窗口标题或者类名来判断程序是否正在运行. 二.通过互斥对象确定程序是否运行,大多数软件都是使用CreateMutexW 判断多开的. 三.内存映射物理文件,控制多开. ...

  6. 我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知

    面试官: 我看你的简历上写着精通MySQL,问你个简单的问题,MySQL联合索引有什么特性? 心想,这还不简单,这不是问到我手心里了吗? 听我给你背一遍八股文! 我: MySQL联合索引遵循最左前缀匹 ...

  7. python、matlab、c++的括号增加次序,以及图片存储方式

    1 增加次序: python:(同c++多维数组) np.zeros([2,3,4]),先是按照内存空间均分为2份,每份又均分3份,最终再细分4份            2最大份,先按左分 例子:re ...

  8. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

  9. (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 ...

随机推荐

  1. JavaScript 定义 类

    JavaScript 定义 类 一 构建类的原则 构造函数 等于 原型的constructor //构造函数 function Hero(name,skill){ this.name = name; ...

  2. python迭代器生成器(三)

    扩展的列表解析语法 今天接着昨天的继续写. 列表解析可以变得更加复杂---例如,它可以包含嵌套的循环,也可能被编写为一系列的for子句.(这里只是简单介绍一下,以后再说这个语法的问题) 例如:构建一个 ...

  3. kbengine所有的demo源代码

    回复才可见的内容https://github.com/kbengine/kbengine_ue4_demo回复才可见的内容https://github.com/kbengine/kbengine_og ...

  4. ajax异步上传文件之data参数----小哈学js

    下载ajaxFileUpload.js(下载网址:http://fileuploadajax.codeplex.com/downloads/get/20976) 修改ajaxFileUpload.js ...

  5. thinkphp分页带数据

    因为用thinkphp做分页时候点击下一页后搜索栏的数据会清空,然后点击下一页后刷新完了就没有内容了,感觉网上查找和我自己研究在不适用ajax做分页的情况下用以下代码就可以实现!!通过把值扔地址栏来进 ...

  6. 如何清除img图片下面有一片空白

    最近在做项目突然发现用了img后有个空白区,如下图: 真的很影响美观,那么是什么原因造成的呢? 右键查看元素查看上下文的margin和padding也没有找到这个空白的来源. 只好上网看看别人是怎么说 ...

  7. localStorage和sessionStorage的使用方法和一些特性介绍

    本文主要介绍的是localStorage和sessionStorage的使用方法和一些特性,以及一些其他的存储方式的比较.   客服端存储方案包括以下几种:     1.Cookie     2.Us ...

  8. 常用PHP函数

    md5_file() 生成md5 $zip = new \ZipArchive(); if($zip->open($savepath.$key) === TRUE){ $zip ->ext ...

  9. 51nod_1639:绑鞋带

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1639 #include <bits/stdc++.h& ...

  10. 采用HTML5之"data-"机制自由提供数据

    周末总是过得很快,又到了跟代码亲密接触的日子,我在北京向各位问好,今天我分享一点关于前端的东西,HTML5之标签"data-*"自定义属性的值传递. 在过去学习JavaScript ...