matlab細化演算法
❶ matlab數字圖像處理,對指紋圖像進行細化,用bwmorph(BW,thin,inf)函數細化
這個參數好像不用定義吧,直接設定了就可以用。比如:bwmorph(BW, 'thin', inf)
就像這篇 http://..com/question/270597346.html 中用的方法。『thin』這個參數就指定了對二值圖像BW進行細化操作,inf(無窮大)這個參數說的是對圖像一直進行細化,直到圖像不再發生變化為止。
❷ matlab最優化演算法有哪些
matlab最優化程序包括
無約束一維極值問題 進退法 黃金分割法 斐波那契法 牛頓法基本牛頓法 全局牛頓法 割線法 拋物線法 三次插值法 可接受搜索法 Goidstein法 Wolfe.Powell法
單純形搜索法 Powell法 最速下降法 共軛梯度法 牛頓法 修正牛頓法 擬牛頓法 信賴域法 顯式最速下降法, Rosen梯度投影法 罰函數法 外點罰函數法
內點罰函數法 混合罰函數法 乘子法 G-N法 修正G-N法 L-M法 線性規劃 單純形法 修正單純形法 大M法 變數有界單純形法 整數規劃 割平面法 分支定界法 0-1規劃 二次規劃
拉格朗曰法 起作用集演算法 路徑跟蹤法 粒子群優化演算法 基本粒子群演算法 帶壓縮因子的粒子群演算法 權重改進的粒子群演算法 線性遞減權重法 自適應權重法 隨機權重法
變學習因子的粒子群演算法 同步變化的學習因子 非同步變化的學習因子 二階粒子群演算法 二階振盪粒子群演算法
❸ 如何用MATLAB細化圖象
你可以把點取細一點
比如原先一個變數A=0:0.01:1;
可以變成A=0:0.001:1;
也就是原先0到1之間取了100個點繪圖改了以後就成取1000個點了圖像自然也就清晰了
❹ MATLAB的圖像細化演算法求助。applylutc.c
%%%%%%%%%%%%%%%模糊聚類%%%%%%%%%%%%%%%%%%%%%%%
clear;
load F:\從0開始\數據\data.txt;
INPUTDATA=data;
%--------原始數據標准化-------%
disp('請選擇原始數據標准化方式: ');
disp('<1-總和標准化|2-標准差標准化|3-極大值標准化|4-極差標准化>');
wayforstand=input('請輸入: ');
switch wayforstand
case 1,
DATAFORCLUS=standard_use_sum(INPUTDATA);
case 2,
DATAFORCLUS=standard_use_std(INPUTDATA);
case 3,
DATAFORCLUS=standard_use_max(INPUTDATA);
case 4,
DATAFORCLUS=standard_use_jc(INPUTDATA);
otherwise
error('您的輸入不符合要求->執行結束!!!');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%基於模糊等價關系的模糊聚類%%%%%%%%%%%%%%%%%%%%%%
%----------構造相似關系-----------%
numrows=size(DATAFORCLUS,1);
numcols=size(DATAFORCLUS,2);
disp('請選擇對象之間相似性統計量的方式: ');
disp('<1-相關系數法|2-夾角餘弦法|3-指數相似系數法|4-絕對值指數法|5-算術平均最小法|6-最大最小值法|7-絕對值差數法|8-數量積法>');
wayforr_ij=input('請輸入: ');
switch wayforr_ij
case 1, %-----------------------------------相關系數法
for i=1:numrows,
for j=1:numrows,
meani=mean(DATAFORCLUS(i,:));meanj=mean(DATAFORCLUS(j,:));
simiR(i,j)=sum((DATAFORCLUS(i,:)-meani).*(DATAFORCLUS(j,:)-meanj))/...
(sqrt(sum((DATAFORCLUS(i,:)-meani).^2))*sqrt(sum((DATAFORCLUS(j,:)-meanj).^2)));
end
end
case 2, %-----------------------------------夾角餘弦法
for i=1:numrows,
for j=1:numrows,
simiR(i,j)=sum(DATAFORCLUS(i,:).*DATAFORCLUS(j,:))/...
(sqrt(sum(DATAFORCLUS(i,:).*DATAFORCLUS(i,:)))*sqrt(sum(DATAFORCLUS(j,:).*DATAFORCLUS(j,:))));
end
end
case 3, %-----------------------------------指數相似系數法
case 4, %-----------------------------------絕對值指數法
case 5, %-----------------------------------算術平均最小法
case 6, %-----------------------------------最大最小值法
case 7, %-----------------------------------絕對值差數法
case 8, %-----------------------------------數量積法
otherwise
error('您的輸入不符合要求->執行結束!!!');
end
%-------改造成等價關系----------%
sign=0;
numselfmul=1;
simiRk=eye(numrows);
equi_tem=simiR;
while sign==0,
for i=1:numrows,
for j=1:numrows,
for c=1:numrows,
rij_temp(c)=min([equi_tem(i,c) equi_tem(c,j)]);
end
simiRk(i,j)=max(rij_temp);
end
end
%--------------%
if sum(sum(simiRk-equi_tem,1))~=0,
numselfmul=numselfmul+1;
equi_tem=simiRk;
else
sign=1;
break
end
%--------------%
end
if sign==1,
disp('從相似矩陣到等價矩陣改造成功!!!');
else
disp('從相似矩陣到等價矩陣改造失敗!!!');
end
equiR=simiRk;
numclass=input('請輸入聚類數: ');
%---------在不同的截集水平進行聚類--------------%
clasc=0;
comp_vec(1,1:numrows)=0;
index=0;
clasc=0;
tip=0;
alpha=0;
temnumeachclass=0;
while (tip==0),
%alpha=input('請輸入進行分類的截集水平λ: ');
%alpha=0.5; %調試
if (alpha<0 || alpha>1),
error('您輸入的截集水平λ不符合分類要求->執行結束!!!');
end
comp_arr=ones(numrows)*alpha;
result_arr=(equiR>=comp_arr); %--------------------result_arr判斷矩陣
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%撿菜演算法
for i=1:numrows,
if sum(comp_vec(1,:)==result_arr(i,:))<numrows, %-----------說明沒有歸類
temnumeachclass=0;
%numeachclass(clasc)=index-temnumeachclass;
temsave=result_arr(i,:);
for j=1:numrows,
if sum(result_arr(j,:)==temsave)==numrows,
index=index+1;
class(index)=j;
result_arr(j,:)=0; %--------------------說明已經被歸類
temnumeachclass=temnumeachclass+1;
end
end
clasc=clasc+1;
nec(clasc)=temnumeachclass;
else
continue;
end
end
if clasc>=numclass,
tip=1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%當模糊分類的數目小於等於所給出的類數時退出循環體
disp('成功!!!');
else
clear class;
clear numeachclass;
clear nec;
clasc=0;
index=0;
temnumeachclass=0;
alpha=alpha+0.01;
end
end
%----取聚類結果----%
num=0;
n=0;
for i=1:clasc,
for j=1:nec(i),
num=num+1;
n=n+1;
CLUS(n,:)=INPUTDATA(class(num),:);
end
n=n+1;
CLUS(n,:)=inf;
end
%format single(CLUS)
lenexport=size(CLUS,1);
for i=1:lenexport,
RESULT(i,:)=sprintf('%15.2f',CLUS(i,:));
end
RESULT
❺ 求matlab工具箱內的細化函數,二值圖像細化
工具箱就是函數的集合吧,沒有啥特殊的。把函數文件全部放到一個文件夾里,那後將該文件夾拷貝到matlab的toolbox文件夾下(在matlab安裝路徑中找),最後將該文件夾路徑添加到matlab路徑中(手動的話在preferens里設置,命令的話用addpath),就可以在任意位置使用這些函數了。
❻ 關於matlab輪廓線細化的問題
%四,圖像均衡化
PA=PS;
for i=0:255
PA(find(PS==i))=S2(i+1); %將各個像素歸一化後的灰度值賦給這個像素
end
figure,imshow(PA) %顯示均衡化後的圖像 figure NO 6
title('均衡化後圖像')
imwrite(PA,'PicEqual.bmp');
❼ Matlab中的細化函數是怎樣的
前幾天剛做的指紋識別演算法,細化部分,以指紋識別為例:getminu.m
%%%%%%%%%%%%%%%%%%%%%%%%%提取指紋細節點演算法,P為細化後圖像
function minu=getminu(P,smooth)
[height,width]=size(P);
minu=P;
cn_coding=zeros(height,width);%連接數編碼初始化
for i=2:height-1
for j=2:width-1
if P(i,j)==1
cn_coding(i,j)=0.5*(abs(P(i,j+1)-P(i-1,j+1))+abs(P(i-1,j+1)-P(i-1,j))+abs(P(i-1,j)-P(i-1,j-1))+abs(P(i-1,j-1)-P(i,j-1))+abs(P(i,j-1)-P(i+1,j-1))+abs(P(i+1,j-1)-P(i+1,j))+abs(P(i+1,j)-P(i+1,j+1))+abs(P(i+1,j+1)-P(i,j+1)));
if cn_coding(i,j)==1%端點
minu(i-1,j)=1;
minu(i+1,j)=1;
minu(i,j-1)=1;
minu(i,j+1)=1;
minu(i-1,j-1)=1;
minu(i-1,j+1)=1;
minu(i+1,j-1)=1;
minu(i+1,j+1)=1;
elseif cn_coding(i,j)==3%交叉點
minu(i-1,j-1)=1;
minu(i-1,j+1)=1;
minu(i+1,j-1)=1;
minu(i+1,j+1)=1;
end
end
end
end
figure,imshow(1-minu);
%%%%消除偽細節點%%%%%%%%%%%%%
detail=P;%%初始化
mark=smooth;
for i=1:height
for j=1:width
if smooth(i,j)==8
mark(i,j)=0;
else mark(i,j)=1;
end
end
end
%figure,imshow(mark)%背景與前景標志
for i=2:height-1
for j=2:width-1
%%%%注意這塊的邏輯關系,括弧的作用很關鍵的
if (cn_coding(i,j)==1||cn_coding(i,j)==3)&&mark(i,j)==1&&mark(i,j+5)*mark(i-5,j)*mark(i,j-5)*mark(i+5,j)==0
cn_coding(i,j)=0;%置為偽細節點
end
if cn_coding(i,j)==1%端點
detail(i-1,j)=1;
detail(i+1,j)=1;
detail(i,j-1)=1;
detail(i,j+1)=1;
detail(i-1,j-1)=1;
detail(i-1,j+1)=1;
detail(i+1,j-1)=1;
detail(i+1,j+1)=1;
elseif cn_coding(i,j)==3%交叉點
detail(i-1,j-1)=1;
detail(i-1,j+1)=1;
detail(i+1,j-1)=1;
detail(i+1,j+1)=1;
end
end
end
figure,imshow(1-detail);
❽ 如何用matlab編程實現指紋圖像的分割與細化
/*
財主^_^,20分也要
*/
#include "stdio.h"
#include "string.h"
int main(int argc, char* argv[])
{
int i;
char str[255];
printf( "Please input the string:");
gets( str );
for( i = strlen( str ) - 1 ; i >= 0 ; i-- )
{
printf( "%c" , str[i] );
}
printf( "\n" );
return 0;
}
❾ 如何用matlab實現對邊緣檢測後的圖像的邊緣細化和曲線擬合
細化可以參考bwmorph函數,擬合可以在邊緣跟蹤提取有序節點後直接進行樣條擬合等操作。
❿ 基於MATLAB的畢業設計有哪些
基於MATLAB的畢業設計有:
1、基於MATLAB的視圖技術分析。
2、二值圖像細化演算法研究與實現。
3、基於MATLAB下的信號分析與處理。
4、基於matlab的偽彩色處理與研究。
5、matlab進行小波分析。
matlab將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和模擬等諸多強大功能集成在一個易於使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案。
(10)matlab細化演算法擴展閱讀
MATLAB特點
1、高效的數值計算及符號計算功能,能使用戶從繁雜的數學運算分析中解脫出來;
2、具有完備的圖形處理功能,實現計算結果和編程的可視化;
3、友好的用戶界面及接近數學表達式的自然化語言,使學者易於學習和掌握;
4、功能豐富的應用工具箱(如信號處理工具箱、通信工具箱等) ,為用戶提供了大量方便實用的處理工具。