融合拼接如何使用?matlab圖像拼接方法

2020-12-04 中華網

matlab圖像拼接的四種方法

1、直接拼接,

2、亮度調整後拼接,

3、按距離比例融合,

4、亮度調整後按距離比例融合

流程:

1。讀入左,右圖,並取出重合部分,並轉化為亮度圖

2。分別把每點的亮度值相加,得到一個比值

3。把比值 乘以 右圖

4。再把左 各 右圖 拼接

5。權重融合

左圖------------重合區----------------------右圖(相加)

100%-----------50%------------------------0%

0%--------------50%------------------------100%

%讀入原圖 (左 右)

img1=imread('2.jpg');

img2=imread('1.jpg');

%查找它們的SIFT特徵,並返回匹配點對---------------------特徵匹配 開始

[des1, des2] = siftMatch(img1, img2);

des1=[des1(:,2),des1(:,1)];%左右(x和y)交換 % 為過濾匹配準備參數

des2=[des2(:,2),des2(:,1)];%

%用 基礎矩陣F 過濾匹配的特徵點對

matchs = matchFSelect(des1, des2) %匹配位置索引(掩碼)

des1=des1(matchs,:);%取出內點

des2=des2(matchs,:);

% 畫出匹配特徵點的連接線(好點)

drawLinedCorner(img1,des1,img2, des2) ;

1、直接拼接

[H,W,k]=size(img1);%圖像大小

l_r=W-des1(1,2)+des2(1,2);%只取水平方向(第一個匹配點)重疊寬度

% 1、直接拼接-------------------------------------------------

%[H,W,k]=size(img1);

%l_r=405;%重疊寬度(W-寬 至 W)---如果不用特徵匹配這裡直接寫重合區寬

L=W+1-l_r;%左邊起點

R=W;%右邊尾點

n=R-L+1;%重疊寬度:就是l_r

%直接拼接圖

im=[img1,img2(:,n:W,:)];%1全圖+2的後面部分

figure;imshow(im);title('直接拼接圖');

2、亮度調整後拼接

%根據之前H矩陣找到的兩幅圖的重疊(l_r)部分

A=img1(:,L:R,:);

B=img2(:,1:n,:);

%A、B 是對應在兩幅圖中的重疊區域

% A=uint8(A); figure;imshow(A);

% B=uint8(B);figure;imshow(B);

%

[ma,na,ka]=size(A);

I1=rgb2gray(A);%轉換為灰度圖像

I1=double(I1);%轉換為雙精度

v1=0;

I2= rgb2gray(B);

I2=double(I2);

v2=0;

for i=1:ma

for j=1:na

%I1(i,j)=0.59*A(i,j,1)+0.11*A(i,j,2)+0.3*A(i,j,3);%按點轉化為灰度圖

v1=v1+I1(i,j);%所有亮度值相加(和)

%I2(i,j)=0.59*B(i,j,1)+0.11*B(i,j,2)+0.3*B(i,j,3);

v2=v2+I2(i,j);

end

end

%figure;imshow(I1,[]);

%figure;imshow(I2,[]);

%亮度比例,並按比例調整第二個圖

k=v1/v2;

BB2=img2(:,n:W,:)*k;%乘比值

im2=[img1,BB2];%拼接

figure;imshow(im2);title('調整亮度後拼接圖');

3、按距離比例融合

%[H,Y,t]=size(im);

C=im;%繼承前圖

D=im2;%繼承前圖(亮度)

% n=拼縫寬;

%for i=1:H %少一重循環

for j=1:n

d=1-(j)/n;%disp(d);% 距離權重

C(1:H,L+j,:)=d*A(1:H,j,:)+(1-d)*B(1:H,j,:);%互補融合

D(1:H,L+j,:)=d*A(1:H,j,:)+(1-d)*B(1:H,j,:)*k;

end

%end

C=uint8(C);

figure;imshow(C);title('直接融合拼接圖');%3

D=uint8(D);

figure;imshow(D);title('亮度處理後融合拼接圖');%4

4、亮度調整後按距離比例融合

完整的m文件:

%matlab圖像拼接(四種方法)

% 1、直接拼接,

% 2、亮度調整後拼接,

% 3、按距離比例融合,

% 4、亮度調整後按距離比例融合

%流程:

%1。讀入左,右圖,並取出重合部分,並轉化為亮度圖

%2。分別把每點的亮度值相加,得到一個比值

%3。把比值 乘以 右圖

%4。再把左 各 右圖 拼接

clear;close all,clc;

%讀入原圖 (左 右)

img1=imread('2.jpg');

img2=imread('1.jpg');

% figure;imshow(img1);%顯示

% figure;imshow(img2);

%查找它們的SIFT特徵,並返回匹配點對---------------------特徵匹配 開始

[des1, des2] = siftMatch(img1, img2);

des1=[des1(:,2),des1(:,1)];%左右(x和y)交換 為基礎矩陣F 過濾匹配準備參數

des2=[des2(:,2),des2(:,1)];%

%用 基礎矩陣F 過濾匹配的特徵點對

matchs = matchFSelect(des1, des2) %匹配位置索引(掩碼)

des1=des1(matchs,:);%取出內點

des2=des2(matchs,:);

% 畫出匹配特徵點的連接線(好點)

drawLinedCorner(img1,des1,img2, des2) ;

%------------------------------------------------------特徵匹配 結束

[H,W,k]=size(img1);%圖像大小

l_r=W-des1(1,2)+des2(1,2);%只取水平方向(第一個匹配點)重疊寬度

% 1、直接拼接-------------------------------------------------

%[H,W,k]=size(img1);

%l_r=405;%重疊寬度(W-寬 至 W)---如果不用特徵匹配這裡直接寫重合區寬

L=W+1-l_r;%左邊起點

R=W;%右邊尾點

n=R-L+1;%重疊寬度:就是l_r

%直接拼接圖

im=[img1,img2(:,n:W,:)];%1全圖+2的後面部分

figure;imshow(im);title('直接拼接圖');

% 2、亮度調整後拼接-------------------------------------------------

%根據之前H矩陣找到的兩幅圖的重疊(l_r)部分

A=img1(:,L:R,:);

B=img2(:,1:n,:);

%A、B 是對應在兩幅圖中的重疊區域

% A=uint8(A); figure;imshow(A);

% B=uint8(B);figure;imshow(B);

%

[ma,na,ka]=size(A);

I1=rgb2gray(A);%轉換為灰度圖像

I1=double(I1);%轉換為雙精度

v1=0;

I2= rgb2gray(B);

I2=double(I2);

v2=0;

for i=1:ma

for j=1:na

%I1(i,j)=0.59*A(i,j,1)+0.11*A(i,j,2)+0.3*A(i,j,3);%按點轉化為灰度圖

v1=v1+I1(i,j);%所有亮度值相加(和)

%I2(i,j)=0.59*B(i,j,1)+0.11*B(i,j,2)+0.3*B(i,j,3);

v2=v2+I2(i,j);

end

end

%figure;imshow(I1,[]);

%figure;imshow(I2,[]);

%亮度比例,並按比例調整第二個圖

k=v1/v2;

BB2=img2(:,n:W,:)*k;%乘比值

im2=[img1,BB2];%拼接

figure;imshow(im2);title('調整亮度後拼接圖');

% 3、按距離比例融合-------------------------------------------------

% 4、亮度調整後按距離比例融合----------------------------------------

% 圖像融合消除拼接縫隙

%用的漸入漸出融合即:距離權重融合

%[H,Y,t]=size(im);

C=im;%繼承前圖

D=im2;%繼承前圖(亮度)

% n=拼縫寬;

%for i=1:H %少一重循環

for j=1:n

d=1-(j)/n;%disp(d);% 距離權重

C(1:H,L+j,:)=d*A(1:H,j,:)+(1-d)*B(1:H,j,:);%互補融合

D(1:H,L+j,:)=d*A(1:H,j,:)+(1-d)*B(1:H,j,:)*k;

end

%end

C=uint8(C);

figure;imshow(C);title('直接融合拼接圖');%3

D=uint8(D);

figure;imshow(D);title('亮度處理後融合拼接圖');%4

特徵點匹配函數取自一個siftDemoV4 包

matlab 7.0 運行

感謝 浮華三生 的評論!

我把siftMatch放在後面,並去掉matchFSelect函數,用上包上的findHomography函數。

先在 這裡下http://www.cs.ubc.ca/~lowe/keypoints/siftDemoV4.zip

%查找它們的SIFT特徵,並返回匹配點對---------------------特徵匹配 開始

[des1, des2] = siftMatch(img1, img2);

%為單應矩陣過濾匹配準備參數

pts1=des1';pts2=des2';

%單應矩陣過濾匹配

[Ht matchs] = findHomography(pts1,pts2);%如無該函數,自行搜索「imMosaic」或「findHomography imMosaic」下載

pts1=pts1(:,matchs);%取出內點

pts2=pts2(:,matchs);

des1=pts1';%格式轉回

des2=pts2';

% 畫出匹配特徵點的連接線(好點)

drawLinedCorner(img1,des1,img2, des2) ;

%------------------------------------------------------特徵匹配 結束

替換前面部分

修改match函數為siftMatch:

% 此函數讀取兩幅圖像,查找它們的SIFT特徵

% 僅當匹配的距離小於與第二個最接近匹配的距離的閾值時,才接受匹配。

% 它返回兩個圖像的匹配點,matchLoc1 = [x1,y1;x2,y2;...]

%

%

function [matchLoc1 matchLoc2] = siftMatch(img1, img2)

% 在每個圖像查找 SIFT 特徵點

[des1, loc1] = sift(img1);

[des2, loc2] = sift(img2);

% 對於MATLAB中的效率,計算單位向量之間的點乘比歐式距離更快捷。請注意:

% 注意角的比率(單位矢量點積的反餘弦)是小角度的歐氏距離之比的近似值。

%

% distRatio: 在這兩隊匹配中只保留矢量角從最近的第二近鄰的比值小於distRatio的。

distRatio = 0.7;

% 在第一個圖像中的每個描述符,選擇它的匹配到第二個圖像。

des2t = des2'; % 預計算矩陣轉置

matchTable = zeros(1,size(des1,1));

for i = 1 : size(des1,1)

dotprods = des1(i,:) * des2t; % 計算點積向量

[vals,indx] = sort(acos(dotprods)); % 取逆餘弦和排序結果

% 看看和最近的鄰居角比率小於distRatio。

if (vals(1) < distRatio * vals(2))

matchTable(i) = indx(1);

else

matchTable(i) = 0;

end

end

% 保存匹配數據表

num = sum(matchTable > 0);

fprintf('找到 %d 對匹配點.\n', num);

idx1 = find(matchTable);

idx2 = matchTable(idx1);

x1 = loc1(idx1,2);

x2 = loc2(idx2,2);

y1 = loc1(idx1,1);

y2 = loc2(idx2,1);

matchLoc1 = [y1,x1];%把y坐標放前面

matchLoc2 = [y2,x2];

end

責任編輯:kj005

文章投訴熱線:156 0057 2229 投訴郵箱:29132 36@qq.com

相關焦點

  • 圖像特徵點、投影變換與圖像拼接
    全景拼接這個功能也能夠讓你拍攝出很大FOV的圖像,你很可能已經使用過這個功能了,它甚至可以拍攝出水平FOV達到360o的圖像。我們可以比較下。這樣拍攝出來的圖像比起魚眼鏡頭的畸變小很多。而在全景拼接中,假如我們要把在不同相機中心位置拍攝的圖像通過投影變換拼接到一起時,會怎麼樣呢?比如下圖,我們要將圖像平面1和2通過投影變換到綠色線表示的共同平面上去,從而實現拼接,此時會怎樣呢?
  • 立體仿真展示 投影拼接融合應用解析
    [中關村在線投影機頻道原創]在工程展示中應用的立體仿真視景系統,一般使用兩臺投影機疊加實現,多為偏振式被動立體成像,配備偏振3D眼鏡觀看效果。相應多通道拼接演示效果,增加了相應數量的投影組合,經過拼接融合形成無縫演示效果。
  • 圖像特徵點、投影變換與圖像拼接
    全景拼接這個功能也能夠讓你拍攝出很大FOV的圖像,你很可能已經使用過這個功能了,它甚至可以拍攝出水平FOV達到360o的圖像。我們可以比較下。這樣拍攝出來的圖像比起魚眼鏡頭的畸變小很多。而在全景拼接中,假如我們要把在不同相機中心位置拍攝的圖像通過投影變換拼接到一起時,會怎麼樣呢?比如下圖,我們要將圖像平面1和2通過投影變換到綠色線表示的共同平面上去,從而實現拼接,此時會怎樣呢?
  • 如何用百度大腦EasyDL零售版實現貨架拼接
    3.1、貨架拼接算法  貨架拼接算法本質上是屬於圖像拼接算法的範疇,在圖像拼接算法中,目前主要有三種不同的方法:1)全局對齊方法,以一個單應性矩陣來對齊圖像,通過求解相機參數對圖像進行變換和融合,輸出拼接圖像;2)空域變化繪製方法,將圖像劃分為密集的網格,每個網格都用一個單應性矩陣對齊,然後對每個網格進行優化變形,採用全局對齊類似的方法對網格圖像進行拼接
  • 360度視頻序列全景圖拼接系統的設計與實現
    [摘 要] 提出了一種視頻序列到全景圖的快速轉換方法。首先對視頻進行抽幀, 獲得初始幀序列,利用特徵點匹配及RANSAC方法計算幀匹配質量及匹配區域, 選取匹配質量高的幀進行拼接並通過加權平均法進行圖像融合,最後得到全景圖。
  • 真的了解字符串拼接嗎?用Python拼接字符串的常用方法及性能分析
    今天,我們來梳理一下Python拼接字符串的幾種常用方法,並對方法進行比較。本篇不會全部進行匯總,旨在通過幾種常用的方法在不同條件下性能進行對比,為大家提供一種字符串使用的指導意見。大家選擇自己熟悉的掌握並使用即可,不需要全部進行記憶(留下大腦空間記點別的東西……)。常見的字符串拼接方式「+」操作符拼接「+」操作符連接字符串是Python中比較經典的字符串拼接方式。可以使用「+」將兩個字符串直接進行拼接。
  • 漯河一站式的0.88拼接屏價格
    漯河一站式的0.88拼接屏價格,以備液晶拼接屏使用,根據液晶拼接屏的不同給於不同的功率,電源線儘量採用粗一些的銅芯線。 用這種方法得到的圖像可以考慮到圖像的清晰度和平滑度的要求。這些是解決無縫拼接拼接間隙的幾種方法。為了突破拼接間隙上的技術難題,專業拼接控制器廠家做出了巨大的努力。近來顯示領域放出了兩個重磅消息。
  • 液晶拼接大屏幕顯示單元使用系統設置簡析
    拼接屏液晶拼接顯示單元是一種工業級的商業終端顯示設備,它以輕薄簡約的外觀設計和當下全球領先的顯示技術參數性能比和靈活的拼接顯示功能,使其在多個環境複雜的環境中都能應用自如,並使得其商顯示設備行業中大放異彩,成為新顯示時代一顆冉冉升起的新星
  • 優秀的拼接設備是提高拼接質量的關鍵!
    影響實木拼板的因素一、粘合壓力粘結壓力會直接影響木材粘結層的形成狀態,壓力過小會導致粘結層過厚,粘結強度低;如果壓力過大,膠層會極薄,導致局部缺膠,低密度材料坍塌,但會降低拼接質量。二、上漿品種因為木材是多孔材料,橡木是闊葉樹,所以它的橫截面上有很多管孔。
  • 液晶拼接屏安裝教程詳解
    導讀 液晶拼接屏不同於液晶電視,液晶拼接屏具有豐富的功能特點,可以長時間24小時使用,應用場合也非常廣泛,所以現在液晶拼接屏已經隨處可見,因為液晶拼接屏的拼縫極窄,在液晶拼接屏安裝過程中容易被很多人忽視
  • 拼接融合超智能 NEC工程投影功能介紹
    一、「衝突風冷系統」專利,液晶板壽命倍增  普通LCD投影機的液晶板冷卻方式為一側進風,另一側出風,利用風道將投影機工作時液晶板產生的大量熱量帶走,這樣的散熱方法簡單,但是顯而易見在效果上差強人意,右側是一個在這種冷卻方式下監測到的液晶板溫度。可以明顯觀測到靠臨進風口的液晶板一端溫度偏低,而越靠近出風口的一端,由於風速的減弱和和風溫的升高,液晶板的溫度越高。
  • 液晶拼接大屏DVI接口如何轉為HDMI接口
    使用液晶拼接DVI轉HDMI線對播放質量影響  嚴格意義上講,播放的質量不會有任何損失,因為它們根本就不需要轉換!在技術規格上,HDMI到液晶拼接DVI是向下兼容的,所有的液晶拼接DVI的規範,HDMI都可以「照章辦事」,因此液晶拼接DVI轉HDMI理論上不會出現任何灰階失真問題!
  • 創新維46寸液晶拼接顯示屏尺寸表
    液晶拼接企業要深化與液晶面板廠商的合作,從大屏拼接上遊控制成本與產品品質,保持自己的優勢,迎接液晶拼接產業的價格戰的挑戰。液晶拼接大屏幕企業想在市場經濟化浪潮的衝擊下,一定腳踏實地,凝聚企業內外的力量打造自身品牌,提供完善服務,堅持技術創新和優化營銷渠道,方能立於不敗之地。
  • 大屏拼接需求放量 監控顯示迎來新的空間
    大屏拼接發展   大屏幕拼接產品最早起源於1992年,是採用DLP的拼接牆系統。以後又陸續出現了CRT、DPD、LCD的大屏幕拼接產品。DLP背投燈源經過了金屬滷素燈、超高壓汞燈、氙燈、LED光源等發展階段。目前較好的的是使用壽命長、亮度衰減小的LED光源,雖然採用LED光源的DLP價格較高但有壽命長的優勢。
  • 液晶屏拼接的工作原理和應用闡述
    本文引用地址:http://www.eepw.com.cn/article/201809/391688.htm  液晶屏拼接  液晶拼接根據不同使用需求,實現畫面分割單屏顯示或多屏顯示的百變大屏功能:單屏分割顯示、單屏單獨顯示、任意組合顯示、全屏液晶拼接、雙重拼接液晶拼接屏、豎屏顯示,圖像邊框可選補償或遮蓋,支持數位訊號的漫遊
  • 谷歌推出全新高質量拼接算法,可生成更清晰更順滑的360度視頻
    高質量的VR相機能讓視頻捕捉更容易,而Jump Assembler可以使VR內容製作者更快、更方便和更實惠的實現自動拼接。藉助先進的計算機視覺算法和Google數據中心的計算能力,Jump Assembler可創建清晰、逼真的圖像拼接,形成身臨其境的360度3D視頻。今天,谷歌在Jump Assembler中引入了一個選項,使用基於多視點立體圖的全新高質量拼接算法。
  • Arcgis影像投影轉換及拼接
    影像拼接拼接時保證要拼接的圖像投影信息一致。打開ArcMap,打開toolbox,datamanagertool->raster->raster dataset->mosaic。選中需要拼接的圖像,點擊ok按鈕即可 文檔來自:百度文庫,向原作者致謝,僅供學習交流之用!
  • 破紀錄的猛獁基因組拼接
    今天介紹的這篇文章的研究者們,就是從這些猛獁象的臼齒的微小樣本中(大約一撮鹽的量)提取DNA,並拼接了基因組。 時間的摧殘使DNA破碎成了億萬個短小的碎片序列,基因組拼接工作就是把這些片段按照它們原有的順序拼在一起。相信玩過拼圖的讀者們都會很容易想像,拼圖的難度取決於幾個因素:1)碎片的數量,2)碎片之間的相似度,3)有沒有遺失的碎片,4)有沒有參考的完成圖。
  • 同樣大小,為什麼液晶拼接屏比普通液晶電視要貴
    為什麼液晶拼接屏價格比液晶電視價格貴? 雖然液晶拼接屏與液晶電視都是用作顯示圖像信號的,但是兩者的性能,構造完全不一樣。它將目前最卓越的高清晰度、高亮度與高色域的液晶顯示技術、嵌入式硬體拼接技術、多屏圖像處理技術、信號切換技術等合為一體,形成一個擁有高亮度、高清晰度、低功耗、高壽命,先進的液晶拼接幕牆顯示系統。液晶拼接幕牆是一種全新的大屏幕拼接方式,其可以無限地拼接。平板拼接顯示技術將是下一代拼接顯示系統的主流應用技術。 液晶顯示技術經多年發展,已在商業拼接顯示領域佔據重要地位。
  • 一種高效無縫基因拼接技術
    通過PCR技術能在體外迅速、大量、靈敏地擴增出目的基因片段,但是需要靈活的改造基因,只有目的基因片段是遠遠不夠的,還需要一種高效的基因加工手段——基因拼接技術。在實驗操作過程中,無論出於基因改造、載體改造以及將來會出現的物種改造等多種涉及DNA操作的實驗,都不可避免會使用到基因拼接技術。