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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【MATLAB图像融合】[18]双通道PCNN模型实现图像融合

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【MATLAB图像融合】[18]双通道PCNN模型实现图像融合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

簡單回顧一下以往的單通道PCNN模型,原理與實現步驟:
13、單通道PCNN原理
14、單通道PCNN融合代碼實現

一、單通道PCNN

圖1 單通道PCNN:
在單通道PCNN中,對于一個神經元的一次迭代過程正如圖1描述:
①、F(i,j)代表外部刺激,在傳統模型中這一刺激都是由I(i,j)提供,像素的灰度值直接作為神經元的刺激,在后來的研究中逐漸發現這樣做不利于表達像素空間關系,從而使用各種算子代替I(i,j)成為外部刺激,在接收部分中除了外部刺激,還有“內部刺激”,這一刺激來自于上一次迭代的結果以及其他神經元上次迭代的結果,根據一定的權重共同組成“內部刺激”,注意,這一名詞并不通用,僅用于理解。
②、調制部分是PCNN內部最重要思想體現,通過接收到的外部刺激與內部刺激,神經元產生了內部活動,內部活動在公式中被命名為U,它實質上是一個計算,將內部刺激視為權值,再結合β這個鏈接強度決定內部刺激這一權值在內部活動中的重要性,完后一個計算,將外部刺激轉換為內部活動值F(i,j)→U(i,j)。
③、設定一個閾值,當內部活動的值大于這個閾值,就產生一個脈沖信號,這一部分就叫做脈沖產生部分,在離散的計算中,產生的脈沖信號就是1。閾值并不是一成不變的,通常選定一個初始閾值,如果內部活動U遲遲不能大于閾值,已經預先選擇好的線性衰減系數或指數衰減系數令這個閾值衰減,閾值越來越小,終于U可以大于閾值T了,當產生脈沖信號后,閾值T立刻增大到這個值(初始閾值T加上上次U大于T時的T值),顯然此時T>=初始T。
綜上所述,我們還是喜歡數學表達式:

二、雙通道PCNN

雙通道PCNN其原理與單通道其實類似,我們在使用單通道PCNN進行圖像融合時,需要對兩幅圖像分別進行PCNN的點火,得到點火圖之后通常根據極大值原則便確立融合決策圖。此時我們的PCNN模型需要獨立運行兩次–PCNN本身就是迭代計算的,所以運行2次會產生較大的計算開銷,這是第一點。第二點就是兩個PCNN各自點各自的火,耦合性質只體現在每幅圖像內部像素點之間,而圖像之間并不存在耦合性。
說了這么多就是為了引出本文的雙通道PCNN,它主要是針對上述兩點問題而提出的一種“新型”PCNN模型,且提出很久了,分析它的結構,我們還可以做出三通道、四通道PCNN。

圖2 雙通道PCNN:與單通道一樣,雙通道同樣有3個部分來描述單個神經元的單次運行,如圖2。
①、我們在一種定義了外部刺激與內部刺激。在接收部分中,雙通道與單通道在內部刺激的接收中是沒有區別的,區別在于外部刺激同時接收雙線信號:I1與I2,分別表示2個不同的外部刺激,在后面的調制部分中,也將變成兩條并行的線路同時計算,增加I的數量,可以類似定義三通道、四通道PCNN。
②、在①中,我們將外部刺激I1與內部刺激結合,可以形成路線1;將外部刺激I2與內部刺激結合,可以形成路線2。這兩路同時做U內部活動的計算,但是內部活動U向第三部分脈沖部分進行的時候,只輸出一個值,兩路產生2個內部活動值,此時,取最大值流入第三部分是它與單通道最大的不同。
③、在經過步驟①②之后,第三部分的工作原理與單通道也是完全一致的。
④、需要注意的是,大體框架雖然沒有區別,但是根據用法的不同,實際上的PCNN模型可以做許多微調,比如內部刺激,我們通常采用窗口內神經元的上次迭代值來輔助決策內部刺激,但是有許多成功的dual-PCNN并不采用窗口,而是簡單地定義為0或1,。這是出于這樣的考慮:
觀察這兩行公式,L是一個只與前次L和前次Y相關的一個變量,它并不受外部刺激的影響,而在U中,L作為一個數字,還要和β相乘。β的值要么是固定值,要么是自適應,分開討論:當β是定值,β相當于常數可以直接乘在第一行的L公式里面,L不具備自適應特性,對于單次計算來說,L也是一個固定值,此時β對機制的調節作用要明顯于L,此時應當維持原公式不變化;當β是自適應的時候,βL反而會變成一個不確定的值,既然L對機制的調節作用不如β重要,確定了一個β,但是βL整體是不可控的,這對機制的把握其實是不利的,在β不能自適應的時候,我們要依賴L,但是現在β自適應了,L的不確定反而會影響β,因此在很多案例中,把βL作為一個整體去優化,而不單單優化β,因為只優化β依然無法完全控制機制。
基于上面的分析,在雙通道PCNN中,既然強調的是2個外部刺激之間的耦合性,那也可以舍棄一定的神經元之間的耦合性,這相當于強化d-PCNN的特性,最終,L被簡化為了一個0/1的常數。
這只是一個舉例,我們分別給出一個常規雙通道PCNN的數學定義,和一個流行的雙通道PCNN的數學定義:
常規PCNN


流行PCNN


三、代碼及分析

clc;clear;close all; A=imread('05A.jpg');A=double(A); B=imread('05B.jpg');B=double(B);C=dual_PCNN(A,B); figure;imshow(A,[]); figure;imshow(B,[]); figure;imshow(C,[]);function R=dual_PCNN(matrixA,matrixB)L1=[-1,-1,-1;-1,8,-1;-1,-1,-1];AA=conv2(matrixA,L1,'same');BB=conv2(matrixB,L1,'same');[p,q]=size(matrixA);F_NA=Normalized(matrixA);F_NB=Normalized(matrixB);L=zeros(p,q);U=zeros(p,q);Y=zeros(p,q);Y0=zeros(p,q);Theta=zeros(p,q);betaA=AA;betaB=BB;con=ones(p,q);fuse=zeros(p,q);np=200;alpha_Theta=0.2;vTheta=20;for n=1:npif sum(sum(Y))<=0L=zeros(p,q);else L=ones(p,q);endTheta=exp(-alpha_Theta)*Theta+vTheta*Y;U=max(F_NA.*(con+betaA.*L),F_NB.*(con+betaB.*L));Y=im2double(U>Theta);Y0=Y0+Y; endfor i = 1:pfor j = 1:qif(F_NA(i,j)*(1+betaA(i,j)*L(i,j)) == U(i,j ))fuse(i,j) = matrixA(i,j);elseif(F_NB(i,j)*(1+betaB(i,j)*L(i,j)) == U(i,j))fuse(i,j) = matrixB(i,j);endendendend R=fuse; endfunction normalized_matrix=Normalized(matrix)input_matrix=abs(matrix);Max_input=max(input_matrix(:));Min_input=min(input_matrix(:));min_matrix=ones(size(input_matrix)).*Min_input;normalized_matrix=(input_matrix-min_matrix)./(Max_input-Min_input+eps); end


可以看到,效果還不錯,下面補一個單通道的測試結果:

clc;clear;close all;im=imread('05A.jpg'); im=double(im);im2=imread('05B.jpg'); im2=double(im2); link_arrange=3; iteration_times=300;firing_times1=PCNN_large_arrange(im,link_arrange,iteration_times); firing_times2=PCNN_large_arrange(im2,link_arrange,iteration_times); [m,n]=size(im2); for i=1:mfor j=1:nif firing_times1>=firing_times2fuse(i,j)=im(i,j);elsefuse(i,j)=im2(i,j);endend end figure;imshow(im,[]); figure;imshow(im2,[]); figure;imshow(fuse,[]);function R=PCNN_large_arrange(matrix,link_arrange,np) F_NA=Normalized(matrix); disp('PCNN is processing...') [p,q]=size(matrix);alpha_L=1; alpha_Theta=0.2;beta=3; vL=1.00; vTheta=10; % Generate the null matrix that could be used L=zeros(p,q); U=zeros(p,q); Y=zeros(p,q); Y0=zeros(p,q); Theta=zeros(p,q); % Compute the linking strength. center_x=round(link_arrange/2); center_y=round(link_arrange/2); W=zeros(link_arrange,link_arrange); for i=1:link_arrangefor j=1:link_arrangeif (i==center_x)&&(j==center_y)W(i,j)=0;elseW(i,j)=1./sqrt((i-center_x).^2+(j-center_y).^2);endend endF=F_NA; for n=1:npK=conv2(Y,W,'same');L=exp(-alpha_L)*L+vL*K;Theta=exp(-alpha_Theta)*Theta+vTheta*Y;U=F.*(1+beta*L);Y=im2double(U>Theta);Y0=Y0+Y; end R=Y0; endfunction [normalized_matrix,cmin,cmax]=Normalized(matrix) input_matrix=abs(matrix); Max_input=max(input_matrix(:)); Min_input=min(input_matrix(:)); min_matrix=ones(size(input_matrix)).*Min_input; normalized_matrix=(input_matrix-min_matrix)./(Max_input-Min_input+eps); cmin=Min_input; cmax=Max_input; end

總結

以上是生活随笔為你收集整理的【MATLAB图像融合】[18]双通道PCNN模型实现图像融合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。