小图拼接大图MATLAB实现
小图拼接大图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实现相关推荐
- 小技巧!如何把小图拼接成长图,将长图切成小图
作为电商来说,经常要将商品详情里的小图用短时间来拼接成一张大图,又要将一整张大图剪切成若干小图.如果这要用PS来拼切长短图,也是一个不小的麻烦事,关键是还不能一次性批量完成.今天小编要介绍一个可以快速 ...
- arcgis合并tif影像_微图影像地图导出拼接大图的参数说明
1. 概述 微图是一款集地图下载与GIS功能于一体的轻量级GIS产品,相较于X3版本的万能地图下载器,它有更丰富的地图数据和更专业的GIS功能. 尽管微图的软件界面已经足够简洁明了,但为了让新用户能更 ...
- h5 先加载小图_【3dmax】小图渲大图(光子贴图的调用)
大家好,今天我们来讲解一下大家常说的用小图渲大图是什么意思. 它的意思就是用低分辨率的渲染获得光子贴图,然后继续渲染最终的成品(也就是获得高分辨率的图像).这就说平常所说的小图渲大图. 这么做的意义是 ...
- gis影像格式img转为ecw_微图影像地图导出拼接大图的参数说明
1. 概述 微图是一款集地图下载与GIS功能于一体的轻量级GIS产品,相较于X3版本的万能地图下载器,它有更丰富的地图数据和更专业的GIS功能. 尽管微图的软件界面已经足够简洁明了,但为了让新用户能更 ...
- html鼠标划过显示图片,jquery实现鼠标滑过小图查看大图的方法
本文实例讲述了jquery实现鼠标滑过小图查看大图的方法.分享给大家供大家参考.具体实现方法如下: 1. CSS部分: ul{ list-style:none; } li{ float:left; m ...
- php图片点击查看大图,jQuery点击小图看大图,大图查看内容详情所有图片
jQuery点击小图看大图,大图查看内容详情所有图片: html代码如下: × < > CSS代码如下: * { margin:0; padding:0; } body { overflo ...
- python获取小图在大图中的坐标和相似度
python获取小图在大图中的坐标和相似度 模块安装:pip install aircv 大小两个图片:big.jpg,small.jpg 模块安装:pip install aircv 大小两个图片: ...
- 功能强大漂亮的js图片相册,js点击小图显示大图
原生js点击图片触发弹窗 页面显示模糊的小图片(small_X.jpg),点击全屏显示高清大图片(large_X.jpg) 可实现放大.缩小.拖拽.旋转.上一张.下一张 以下为demo相关页面展示: ...
- python之PIL 小图拼接成大图
前言 上一篇文章,我们把一张超大图给拆分成了n行m列的小图.后来我们 又有一个新需求,就是把图片给卡通风格化,顺便在把图片处理清晰一些,于是我就使用了https://github.com/AaronF ...
最新文章
- Java设计模式-七大设计原则
- PHP转义Json里的特殊字符的函数
- 深入研究Servlet线程安全性问题
- springboot + kafka
- 关于volatile(转)
- linux shell脚本攻略第3版_「技术干货」师傅说不会写shell脚本的网安不是一个好黑客,实战...
- char赋值字符串常量和数值的区别
- 【数据库】MySql分割字符串
- 论文笔记_CV_AD_Visual Perception for Autonomous Driving
- linux中iptables乱码,xshell连接CentOS6.5 iptables或ls 输出乱码-Go语言中文社区
- 浅析 @PathVariable 和 @RequestParam(转发,非原创)
- 【问题10】使用Redis SETNX 命令实现分布式锁
- 三角网导线平差实例_三角网闭合导线计算()
- 维纳滤波python 函数_加性高斯白噪声及维纳滤波的基本原理与Python实现
- java nlpir_java实现NLPIR(ICTCLAS)分词
- 半闲居士 RGB-D slam代码编译总结
- 【心理咨询师考试笔记】基础理论(五)——心理健康与常见精神障碍
- c 语言友元函数重载,C++友元函数重载++和--运算符
- Jsp的四大作用域与九大对象
- 标准和非标poe交换机如何选择