㈠ 基於遺傳演算法的KSW雙閾值分割法 分割時間
OTSU 演算法是一種確定圖像二值化分割閾值的演算法,可以說是自適應計算單閾值 的簡單高效方法.最大類間方差法是由日本學者大津於1979年提出的,是一種自適應的閾值確定的方法,又叫大津法,簡稱OTSU。它是按圖像的灰度特性,將圖像分成背景和目標2部分。背景和目標之間的類間方差越大,說明構成圖像的2部分的差別越大,當部分目標錯分為背景或部分背景錯分為目標都會導致2部分差別變小。因此,使類間方差最大的分割意味著錯分概率最小。
㈡ 遺傳演算法作圖像分割時的最佳閾值為什麼總在變化
在此提供兩種方法,一,最大閾值分割(大律法):I=imread('test.jpg');subplot(1,3,1);imshow(I);title('原圖');I1=rgb2gray(I);subplot(1,3,2);imhist(I1);title('直方圖');level=graythresh(I);g=im2bw(I,level);%最佳閾值levelsubplot(1,3,3);imshow(g);title('閾值分割');%在Command窗口輸出灰度閾值disp(strcat('graythresh計算灰度閾值:',num2str(uint8(level*255))))第二種:迭代求閾值I=imread('C:test.jpg');Zmax=max(max(I));Zmin=min(min(I));TK=(Zmax+Zmin)/2;%初始閾值flag=1;[m,n]=size(I);while(flag)fg=0;bg=0;fgsum=0;bgsum=0;fori=1:mforj=1:ntmp=I(i,j);if(tmp>=TK)fg=fg+1;fgsum=fgsum+double(tmp);elsebg=bg+1;bgsum=bgsum+double(tmp);endenden1=fgsum/fg;u2=bgsum/bg;TKTmp=uint8((u1+u2)/2);if(TKTmp==TK)flag=0;elseTK=TKTmp;endenddisp(strcat('迭代後的閾值:',num2str(TK)));newI=im2bw(I,double(TK)/255);subplot(1,2,1);imshow(I);title('原圖')subplot(1,2,2);imshow(newI);tltle('閾值分割圖');
㈢ 遺傳演算法 matlab、C++ 分割
遺傳演算法和圖像分割都了解。如何用前者實現後者沒做過。Matlab和C++也都懂。你的思路是?第一代簡單分割(任意分類),以後再根據適應度函數逐步更新?分類的依據是什麼,灰度?特徵?用於什麼目的?如果根據灰度分類的話,感覺用不上遺傳演算法。
㈣ 遺傳演算法用於圖像分割的matlab程序。我用了你的程序但分割後目標圖像出不來,有錯誤麻煩您給指點一下
怎麼聯系您?您的問題太籠統了!
㈤ 遺傳演算法流程圖
首先你的這個問題沒有什麼意義,明顯x=31的時候y最大嘛。。。
%定義遺傳演算法參數
NIND=40; %個體數目(Number of indivials)
MAXGEN=25; %最大遺傳代數(Maximum number of generations)
PRECI=20; %變數的二進制位數(Precision of variables)
GGAP=0.9; %代溝(Generation gap)
trace=zeros(2, MAXGEN); %尋優結果的初始值
FieldD=[20;0;31;1;0;1;1]; %區域描述器(Build field descriptor)
Chrom=crtbp(NIND, PRECI); %初始種群
gen=0; %代計數器
variable=bs2rv(Chrom, FieldD); %計算初始種群的十進制轉換
ObjV=variable.*variable; %計算目標函數值
while gen<MAXGEN
FitnV=ranking(-ObjV); %分配適應度值(Assign fitness values)
SelCh=select('sus', Chrom, FitnV, GGAP); %選擇
SelCh=recombin('xovsp', SelCh, 0.7); %重組
SelCh=mut(SelCh); %變異
variable=bs2rv(SelCh, FieldD); %子代個體的十進制轉換
ObjVSel=variable.*variable; %計運算元代的目標函數值
[Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新種群
variable=bs2rv(Chrom, FieldD);
gen=gen+1; %代計數器增加
%輸出最優解及其序號,並在目標函數圖像中標出,Y為最優解,I為種群的序號
[Y, I]=max(ObjV);hold on;
plot(variable(I), Y, 'bo');
trace(1, gen)=max(ObjV); %遺傳演算法性能跟蹤
trace(2, gen)=sum(ObjV)/length(ObjV);
end
variable=bs2rv(Chrom, FieldD); %最優個體的十進制轉換
hold on, grid;
plot(variable,ObjV,'b*');
figure(2);
plot(trace(1,:));
hold on;
plot(trace(2,:),'-.');grid
legend('解的變化','種群均值的變化')
上面是這個問題的MATLAB程序,你自己研究一下吧
運行的時候需要MATLAB遺傳演算法工具箱
㈥ 急!!求遺傳演算法圖像邊緣檢測的matlab程序,馬上就要交畢設了,誰能幫我啊我的郵箱942406137,有加分啊
http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=49464 Matlab程序:遺傳演算法/大津法/區域生長法/迭代法分割圖像
㈦ 遺傳演算法路徑規劃是什麼原理
遺傳演算法有相當大的引用。遺傳演算法在游戲中應用的現狀在遺傳編碼時, 一般將瓦片的坐標作為基因進行實數編碼, 染色體的第一個基因為起點坐標, 最後一個基因為終點坐標, 中間的基因為路徑經過的每一個瓦片的坐標。在生成染色體時, 由起點出發, 隨機選擇當前結點的鄰居節點中的可通過節點, 將其坐標加入染色體, 依此循環, 直到找到目標點為止, 生成了一條染色體。重復上述操作, 直到達到指定的種群規模。遺傳演算法的優點:1、遺傳演算法是以決策變數的編碼作為運算對象,可以直接對集合、序列、矩陣、樹、圖等結構對象進行操作。這樣的方式一方面有助於模擬生物的基因、染色體和遺傳進化的過程,方便遺傳操作運算元的運用。另一方面也使得遺傳演算法具有廣泛的應用領域,如函數優化、生產調度、自動控制、圖像處理、機器學習、數據挖掘等領域。2、遺傳演算法直接以目標函數值作為搜索信息。它僅僅使用適應度函數值來度量個體的優良程度,不涉及目標函數值求導求微分的過程。因為在現實中很多目標函數是很難求導的,甚至是不存在導數的,所以這一點也使得遺傳演算法顯示出高度的優越性。3、遺傳演算法具有群體搜索的特性。它的搜索過程是從一個具有多個個體的初始群體P(0)開始的,一方面可以有效地避免搜索一些不必搜索的點。另一方面由於傳統的單點搜索方法在對多峰分布的搜索空間進行搜索時很容易陷入局部某個單峰的極值點,而遺傳演算法的群體搜索特性卻可以避免這樣的問題,因而可以體現出遺傳演算法的並行化和較好的全局搜索性。4、遺傳演算法基於概率規則,而不是確定性規則。這使得搜索更為靈活,參數對其搜索效果的影響也盡可能的小。5、遺傳演算法具有可擴展性,易於與其他技術混合使用。以上幾點便是遺傳演算法作為優化演算法所具備的優點。遺傳演算法的缺點:遺傳演算法在進行編碼時容易出現不規范不準確的問題。