日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小图拼接大图MATLAB实现

發(fā)布時(shí)間:2025/5/22 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小图拼接大图MATLAB实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

小圖拼接大圖MATLAB實(shí)現(xiàn)

1.實(shí)現(xiàn)效果圖

原圖

效果圖

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);%統(tǒng)計(jì)平均值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.思路分析

第二部分思路很簡單,其實(shí)就是某塊像素區(qū)域rgb分量相近的圖片去替換原圖片中對應(yīng)像素點(diǎn)即可。在上述代碼中,我選擇將其他圖片先轉(zhuǎn)化為1010大小的圖片,分別計(jì)算rgb三個(gè)分類的平均值,之后,用10 10大小的核掃描原圖像,計(jì)算該塊內(nèi)rgb分量平均值,隨后計(jì)算|r-t_r|+|g-t_g|+|b-t_b|之和,統(tǒng)計(jì)最小的數(shù)值,選取對應(yīng)的圖片像素替換原位置像素值。

4. 總結(jié)不足

從效果圖中我們可以發(fā)現(xiàn),其實(shí)有很多地方的顏色并不是很匹配,這個(gè)原因有兩個(gè),其中一個(gè)是備選圖像庫比較少,顏色單調(diào),我的圖像備選庫大小是八百,從網(wǎng)上爬取的一個(gè)類型圖片,所以可能顏色大體都是那么幾種。第二個(gè)原因就是核大小的選擇,選擇小一點(diǎn),就能顯示得更像一個(gè)圖像。其次,這份代碼其實(shí)有點(diǎn)過于暴力,完全匹配每張圖片耗時(shí)有點(diǎn)多,尤其是在備選圖庫非常大的時(shí)候,之后有時(shí)間再做修改~也歡迎補(bǔ)充建議

轉(zhuǎn)載于:https://www.cnblogs.com/FZfangzheng/p/10852575.html

總結(jié)

以上是生活随笔為你收集整理的小图拼接大图MATLAB实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。