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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

基于MATLAB的几种图像分割算法

發布時間:2023/12/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于MATLAB的几种图像分割算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

最大類間方差法:基本思路是根據直方圖以某一會灰度為閾值將圖像分割成兩部分,計算兩組的方差,當被分成的兩組之間的方差最大時,這個灰度為閾值灰度值

img = imread('C:\Users\dell\Desktop\前單圖\3.3.JPG');%原圖I_gray=rgb2gray(img);%轉換為灰度圖subplot(121),imshow(img); %轉換為雙精度 I_double=double(I_gray); [wid,len]=size(I_gray);%圖像的大小 %灰度級 colorLevel=256; %直方圖 hist=zeros(colorLevel,1); %計算直方圖 for i=1:widfor j=1:lenm=I_gray(i,j)+1;%圖像的灰度級mhist(m)=hist(m)+1;%灰度值為i的像素和end end %直方圖歸一化 hist=hist/(wid*len);%各灰度值概率 Pi miuT=0;%定義總體均值 for m=1:colorLevelmiuT=miuT+(m-1)*hist(m); %總體均值 end xigmaB2=0;% for mindex=1:colorLevelthreshold=mindex-1;%設定閾值omega1=0;%目標概率omega2=0;%背景概率for m=1:threshold-1omega1=omega1+hist(m);% 目標概率 W0endomega2=1-omega1; %背景的概率 W1miu1=0;%目標的平均灰度值miu2=0;%背景的平均灰度值for m=1:colorLevelif m<thresholdmiu1=miu1+(m-1)*hist(m);%目標 i*pi的累加值[1 threshold]elsemiu2=miu2+(m-1)*hist(m);%背景 i*pi的累加值[threshold m]endendmiu1=miu1/omega1;%目標的平均灰度值miu2=miu2/omega2;%背景的平均灰度值xigmaB21=omega1*(miu1-miuT)^2+omega2*(miu2-miuT)^2;%最大方差xigma(mindex)=xigmaB21;%先設定一個值 再遍歷所有灰度級%找到xigmaB21的值最大if xigmaB21>xigmaB2finalT=threshold;%找到閾值 灰度級xigmaB2=xigmaB21;%方差為最大end end %閾值歸一化 fT=finalT/255; for i=1:widfor j=1:lenif I_double(i,j)>finalT %大于所設定的均值 則為目標bin(i,j)=0;elsebin(i,j)=1;endend end subplot(122),imshow(bin);

?

?

局部閾值算法:?主要應用于圖像中有陰影,光照不均勻,各處的對比度不同,有突出噪聲,背景灰度突變等?

function bw=adaptivethreshold(IM,ws,C,tm) % 功能:自適應圖像分割 % IM-待分割的原始圖像  ws平均濾波時的窗口大小 %C 常量 根據經驗選擇合適的參數 % tm -開關變量 1=中值濾波 0=均值濾波 %bw- 圖像分割后的二值圖像 %輸入參數處理 if (nargin<3)error('You must provide the image IM, the window size ws, and C'); elseif(nargin==3)tm=0;elseif(tm~=0&&tm~=1)error('tm must be 0 or 1'); endIM=mat2gray(IM);if tm==0%圖像均值濾波mIM=imfilter(IM,fspecial('average',ws),'replicate');else%圖像進行中值濾波mIM=medfilt2(IM,[ws,ws]);endsIM=mIM-IM-C;bw=im2bw(sIM,0);bw=imcomplement(bw);

?

?K-means均值法:是一種廣泛的聚類方法

function [mu,mask]=kmeans(ima,k) %功能·:運用K-means算法對圖像進行分割 % 輸入 ima-輸入的灰度圖像 K-分類數 %輸出 mu -均值類向量 mask-分類后的圖像 ima=double(ima); copy=ima; ima=ima(:); mi=min(ima);%找到最小值 ima=ima-mi+1; s=length(ima);%有多少灰度級 %計算圖像灰度直方圖 m=max(ima)+1;%圖像最大灰度值 h=zeros(1,m); hc=zeros(1,m); for i=1:sif (ima(i)>0)h(ima(i))=h(ima(i))+1;%灰度值i累加endend ind =find(h); h1=length(ind); %初始化質心 mu=(1:k)*m/(k+1); %start process while(true)oldmu=mu;%現有的分類·for i=1:h1c=abs(ind(i)-mu);cc=find(c==min(c));hc(ind(i))=cc(1);end%重新計算均值for i=1:ka=find(hc==i)mu(i)=sum(a.*h(a))/sum(h(a));endif(mu==oldmu) break;end end%計算生成分類后的圖像 s=size(copy); mask=zeros(s); for i=1:s(1)for j=1:s(2)c=abs(copy(i,j)-mu);a=find(c==min(c));mask(i,j)=a(1);end end mu=mu+mi-1;

?

?K-means均值效果圖

?

?

?詳情請參考:《現代數字圖像處理技術提高及應用案例詳解》趙小川著

總結

以上是生活随笔為你收集整理的基于MATLAB的几种图像分割算法的全部內容,希望文章能夠幫你解決所遇到的問題。

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