X=reshape(double(imgray)/256.0,m*n,1); for i=1:m*n if(X(i)==0 ||X(i)<30/256.0) Xout(i)=0; else p1=w1*normpdf(X(i),mu1,sigma1)/(w1*normpdf(X(i),mu1,sigma1)+w2*normpdf(X(i),mu2,sigma2)); p2=1-p1; if(p1>=p2) Xout(i)=1; else Xout(i)=0.5; end end end Xout_image=reshape(Xout,m,n); for k = 1:m for kk = 1:n if(imgray(k,kk)<30) Xout_image(k,kk) = 0; end end end figure('NumberTitle', 'on', 'Name', '灰度分类'), imshow(Xout_image),title('Gray\_processing'); imagbwhigh=imbinarize(Xout_image,200/255.0); imagbwlow=imbinarize(Xout_image,100/255.0); se=strel('disk',5'); imagbwhight=imdilate(imagbwhigh,se); imagbwhigh = imagbwhight&(imagbwhigh|imagbwlow); imagbwlow = imagbwlow&~imagbwhigh; figure()
时间: 2024-04-02 09:36:42 浏览: 63
图像处理之256色转灰度图
这段代码是对灰度图像进行分类处理,首先将图像转换为一维向量 X,然后对 X 中的每个像素进行分类处理。如果像素值为 0 或小于 30/256.0,则将输出像素值设为 0;否则,根据公式计算出该像素属于两个分类的概率 p1 和 p2,然后根据这两个概率值将输出像素值设为 0、0.5 或 1。然后将输出的一维向量 Xout 重新转换为二维图像 Xout_image,并对像素值小于 30 的部分进行处理。最后,将 Xout_image 转换为二值图像 imagbwhigh 和 imagbwlow,使用形态学膨胀操作对 imagbwhigh 进行处理,最后将 imagbwhigh 和 imagbwlow 进行与或运算得到最终的图像。最后在一个新的窗口中显示处理后的图像。
阅读全文