小图拼接大图MATLAB实现

1.实现效果图

原图

效果图

2.代码

files = dir(fullfile('D:\document\GitHub\homework\digital image processing\image_spider\animation\','*.jpg'));
target=imread('D:\document\GitHub\homework\digital image processing\image_spider\target.jpg');
lengthFiles = length(files);
error=0;
data=[];
for i = 1:lengthFiles;tryImg = imread(strcat('D:\document\GitHub\homework\digital image processing\image_spider\animation\',files(i).name));%文件所在路径%改变大小newimg=imresize(Img,[10,10]);%获取三分量imager=newimg(:,:,1);imageg=newimg(:,:,2);imageb=newimg(:,:,3);%统计平均值image_r=0;image_g=0;image_b=0;for m=1:10for j=1:10image_r=int32(image_r)+int32(imager(m,j));image_g=int32(image_g)+int32(imager(m,j));image_b=int32(image_b)+int32(imager(m,j));%fprintf('i is  %d image_r is %d  image_g is  %d  image_b is %d\n',i,image_r,image_g,image_b)endendfprintf('i is  %d image_r is %d  image_g is  %d  image_b is %d\n',i,image_r,image_g,image_b)image_r=image_r/100;image_g=image_g/100;image_b=image_b/100;data=[data image_r image_g image_b];%disp(strcat('D:\document\GitHub\homework\digital image processing\image_spider\animation\',files(i).name)) %打印文件路径%imshow(Img)catchdisp(strcat('D:\document\GitHub\homework\digital image processing\image_spider\animation\',files(i).name)) %打印文件路径error=error+1;end
end
sizetarget=size(target);
x=sizetarget(1,1);
y=sizetarget(1,2);
t_image_r=0;
t_image_g=0;
t_image_b=0;
for i=1:10:xfor j=1:10:yif (i+9>x||j+9>y)continue;endfor m=i:i+9for n=j:j+9t_image_r=int32(t_image_r)+int32(target(m,n,1));t_image_g=int32(t_image_g)+int32(target(m,n,2));t_image_b=int32(t_image_b)+int32(target(m,n,3));endendt_image_r=t_image_r/100;t_image_g=t_image_g/100;t_image_b=t_image_b/100;%fprintf('r is %d  g is  %d  b is  %d\n',t_image_r,t_image_g,t_image_b)cha=765;mini=1;sizedata=size(data);for q=1:3:sizedata(1,2)cha1=abs(t_image_r-data(q))+abs(t_image_g-data(q+1))+abs(t_image_b-data(q+2));if(cha1<cha)cha=cha1;mini=floor(q/3)+1;endend%disp(mini)Img = imread(strcat('D:\document\GitHub\homework\digital image processing\image_spider\animation\',files(mini).name));%文件所在路径newimg=imresize(Img,[10,10]);for q=0:9for p=0:9target(i+q,j+p,1)=newimg(q+1,p+1,1);target(i+q,j+p,2)=newimg(q+1,p+1,2);target(i+q,j+p,3)=newimg(q+1,p+1,3);endendfprintf('x is %d  y is  %d\n',i,j)end
end
imwrite(target,'target.jpg');

3.思路分析

第二部分思路很简单,其实就是某块像素区域rgb分量相近的图片去替换原图片中对应像素点即可。在上述代码中,我选择将其他图片先转化为1010大小的图片,分别计算rgb三个分类的平均值,之后,用10 10大小的核扫描原图像,计算该块内rgb分量平均值,随后计算|r-t_r|+|g-t_g|+|b-t_b|之和,统计最小的数值,选取对应的图片像素替换原位置像素值。

4. 总结不足

从效果图中我们可以发现,其实有很多地方的颜色并不是很匹配,这个原因有两个,其中一个是备选图像库比较少,颜色单调,我的图像备选库大小是八百,从网上爬取的一个类型图片,所以可能颜色大体都是那么几种。第二个原因就是核大小的选择,选择小一点,就能显示得更像一个图像。其次,这份代码其实有点过于暴力,完全匹配每张图片耗时有点多,尤其是在备选图库非常大的时候,之后有时间再做修改~也欢迎补充建议

转载于:https://www.cnblogs.com/FZfangzheng/p/10852575.html

小图拼接大图MATLAB实现相关推荐

  1. 小技巧!如何把小图拼接成长图,将长图切成小图

    作为电商来说,经常要将商品详情里的小图用短时间来拼接成一张大图,又要将一整张大图剪切成若干小图.如果这要用PS来拼切长短图,也是一个不小的麻烦事,关键是还不能一次性批量完成.今天小编要介绍一个可以快速 ...

  2. arcgis合并tif影像_微图影像地图导出拼接大图的参数说明

    1. 概述 微图是一款集地图下载与GIS功能于一体的轻量级GIS产品,相较于X3版本的万能地图下载器,它有更丰富的地图数据和更专业的GIS功能. 尽管微图的软件界面已经足够简洁明了,但为了让新用户能更 ...

  3. h5 先加载小图_【3dmax】小图渲大图(光子贴图的调用)

    大家好,今天我们来讲解一下大家常说的用小图渲大图是什么意思. 它的意思就是用低分辨率的渲染获得光子贴图,然后继续渲染最终的成品(也就是获得高分辨率的图像).这就说平常所说的小图渲大图. 这么做的意义是 ...

  4. gis影像格式img转为ecw_微图影像地图导出拼接大图的参数说明

    1. 概述 微图是一款集地图下载与GIS功能于一体的轻量级GIS产品,相较于X3版本的万能地图下载器,它有更丰富的地图数据和更专业的GIS功能. 尽管微图的软件界面已经足够简洁明了,但为了让新用户能更 ...

  5. html鼠标划过显示图片,jquery实现鼠标滑过小图查看大图的方法

    本文实例讲述了jquery实现鼠标滑过小图查看大图的方法.分享给大家供大家参考.具体实现方法如下: 1. CSS部分: ul{ list-style:none; } li{ float:left; m ...

  6. php图片点击查看大图,jQuery点击小图看大图,大图查看内容详情所有图片

    jQuery点击小图看大图,大图查看内容详情所有图片: html代码如下: × < > CSS代码如下: * { margin:0; padding:0; } body { overflo ...

  7. python获取小图在大图中的坐标和相似度

    python获取小图在大图中的坐标和相似度 模块安装:pip install aircv 大小两个图片:big.jpg,small.jpg 模块安装:pip install aircv 大小两个图片: ...

  8. 功能强大漂亮的js图片相册,js点击小图显示大图

    原生js点击图片触发弹窗 页面显示模糊的小图片(small_X.jpg),点击全屏显示高清大图片(large_X.jpg) 可实现放大.缩小.拖拽.旋转.上一张.下一张 以下为demo相关页面展示: ...

  9. python之PIL 小图拼接成大图

    前言 上一篇文章,我们把一张超大图给拆分成了n行m列的小图.后来我们 又有一个新需求,就是把图片给卡通风格化,顺便在把图片处理清晰一些,于是我就使用了https://github.com/AaronF ...

最新文章

  1. Java设计模式-七大设计原则
  2. PHP转义Json里的特殊字符的函数
  3. 深入研究Servlet线程安全性问题
  4. springboot + kafka
  5. 关于volatile(转)
  6. linux shell脚本攻略第3版_「技术干货」师傅说不会写shell脚本的网安不是一个好黑客,实战...
  7. char赋值字符串常量和数值的区别
  8. 【数据库】MySql分割字符串
  9. 论文笔记_CV_AD_Visual Perception for Autonomous Driving
  10. linux中iptables乱码,xshell连接CentOS6.5 iptables或ls 输出乱码-Go语言中文社区
  11. 浅析 @PathVariable 和 @RequestParam(转发,非原创)
  12. 【问题10】使用Redis SETNX 命令实现分布式锁
  13. 三角网导线平差实例_三角网闭合导线计算()
  14. 维纳滤波python 函数_加性高斯白噪声及维纳滤波的基本原理与Python实现
  15. java nlpir_java实现NLPIR(ICTCLAS)分词
  16. 半闲居士 RGB-D slam代码编译总结
  17. 【心理咨询师考试笔记】基础理论(五)——心理健康与常见精神障碍
  18. c 语言友元函数重载,C++友元函数重载++和--运算符
  19. Jsp的四大作用域与九大对象
  20. 标准和非标poe交换机如何选择

热门文章

  1. JSON 之 SuperObject(16): 实例 - 解析 Google 关键字搜索排名
  2. winxp登陆后自动注销
  3. C语言sopc蜂鸣器按键弹奏中音,基于sopc 蜂鸣器
  4. java和打印机通信,通过Windows驱动程序与热敏打印机进行双向通信
  5. 计算机病毒会不会通过u盘传染,这样会感染病毒吗?
  6. Python 途虎养车全系车型轮毂--参数分析与实现
  7. 汽车之家APP车型配置--参数分析
  8. 零基础学习JavaSE(一)
  9. aspx后缀映射成html
  10. strong与em、q、cite、blockquote区别