首页 > 编程语言 >MATLAB图像分析程序

MATLAB图像分析程序

时间:2023-12-01 12:22:24浏览次数:38  
标签:end ForegroundSum 分析程序 MATLAB iBackground 图像 iSize iForeground TK

​1.迭代法

 

I=imread('rice.png');
ZMax=max(max(I));
ZMin=min(min(I));
TK=(ZMax+ZMin)/2;
bCal=1;
iSize=size(I);
while(bCal)
iForeground=0;
iBackground=0;
ForegroundSum=0;
BackgroundSum=0;
for i=1:iSize(1)
for j=1:iSize(2)
tmp=I(i,j);
if(tmp>=TK)
iForeground=iForeground+1;
ForegroundSum=ForegroundSum+double(tmp);
else
iBackground=iBackground+1;
BackgroundSum=BackgroundSum+double(tmp);
end
end
end
ZO=ForegroundSum/iForeground;
ZB=BackgroundSum/iBackground;
TKTmp=uint8((ZO+ZB)/2);
if(TKTmp==TK)
bCal=0;
else
TK=TKTmp;
end
end
disp(strcat('迭代后的域值:',num2str(TK)));
newI=im2bw(I,double(TK)/255);
subplot(121),imshow(I)
subplot(122),imshow(newI)
运行结果:迭代后的域值:131

 

2.大津法
  

%大津法
I=imread('coins.png');
subplot(131),imshow(I);
title('原始图像')
level=graythresh(I);
BW=im2bw(I,level);
subplot(132),imshow(BW)
title('graythresh计算阈值')
disp(strcat('graythresh计算灰度阈值:',num2str(uint8(level*255))))
iMax=max(max(I));
iMin=min(min(I));
T=double(iMin:iMax);
iSize=size(I);
muxSize=iSize(1)*iSize(2);
for i=1:length(T)
TK=T(1,i);
iForeground=0;
iBzckground=0;
ForegroundSum=0;
BzckgroundSum=0;
for j=1:iSize(1)
for k=1:iSize(2)
tmpData=I(j,k);
if(tmpData>=TK)
iForeground=iForeground+1;
ForegroundSum=ForegroundSum+double(tmpData);
else
iBackground=iBackground+1;
BackgroundSum=BackgroundSum+double(tmpData);
end
end
end
w0=iForeground/muxSize;
w1=iBackground/muxSize;
u0=ForegroundSum/iForeground;
u1=BackgroundSum/iBackground;
T(2,i)=w0*w1*(u0-u1)*(u0-u1);
end
oMax=max(T(2,:);
idx=find(T(2,:)>=oMax);
T=uint8(T(1,idx));
disp(strcat('简化大津法计算灰度阈值:',num2str(T)))
BW=im2bw(I,double(T)/255);
subplot(133),imshow(BW)
title('简化大津法计算灰度阈值')运行结果:
graythresh计算灰度阈值:126

 

MATLAB实现图像分割otsuf 源程序代码

MATLAB语言进行简单的图像处理

标签:end,ForegroundSum,分析程序,MATLAB,iBackground,图像,iSize,iForeground,TK
From: https://www.cnblogs.com/bbhhh/p/17869435.html

相关文章

  • Matlab获取鼠标坐标值的ginput()函数
    ​获取鼠标坐标值的第一种途径:利用Matlab7.0中figure的WindowButtonDownFcn属性。当你在图上按下鼠标的时候,可通过该属性定义一个回调程序。回调程序可以是一个有效的Matlab表达式或者一个M文件。那么为显示当前鼠标按下时的坐标值,我们可以将其定义为一个坐标获取和显示程序。......
  • 1-计算机眼中的图像
    1.读取图像生成矩阵: 2.根据矩阵数据显示图像窗口: ......
  • MATLAB实现图像小波变换去噪
    clear;[A,map]=imread('C:\Users\wangd\Documents\MATLAB\1.jpg');X=rgb2gray(A);%画出原始图像subplot(2,2,1);imshow(X);title('原始图像');%产生含噪图像x=imnoise(X,'gaussian',0,0.003);%画出含噪图像......
  • 基于FPGA的图像白平衡算法实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览    2.算法运行软件版本vivado2019.2 matlab2022a 3.算法理论概述       FPGA(Field-ProgrammableGateArray)是一种可编程逻辑电路,可以通过编程实现各种算法,包括图像白平衡算法。图像白平衡算法是一种用于调整图像颜色温度的方法,......
  • 基于MUSIC算法的二维超声波成像matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述      MUSIC(MultipleSignalClassification)算法是一种广泛应用于信号处理领域的算法,它可以用于估计信号的波达方向或频率。在超声波成像中,MUSIC算法可以用于提高图像的分辨率和降低......
  • matlab图像频谱图画图
    I=imread('C:\Users\wangd\Desktop\in000155.jpg');%读入原图像文件I1=rgb2gray(I);subplot(1,2,1);imshow(I1);%显示原图像fftI1=fft2(I1);%二维离散傅立叶变换sfftI1=fftshift(fftI1);%直流分量移到频谱中心RR1=re......
  • matlab在图像中随机更改像素值程序
    I=imread('C:\Users\wangd\Desktop\result3.png');%m=rgb2gray(I);%r=unidrnd(255,1,100);%产生一个1*100的数组,数组中的值为1至255中的随机值%r1=randi([2,7],10,100);%在开区间(2,7)生成10*100型随机矩阵subplot(2,2,1);imshow(I);title('原始图像');forw=1:......
  • matlab一维信号频谱图仿真
    程序1:%在MATLAB中是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当采样时间间隔足够小时,这些离散的采样值就能较好地近似出连续信号,matlab中连续信号的显示实际上还是离散信号的显示,只是取样点特别%多的时候,用线连接起来,显示出来的图形就比较圆滑,接近连续信号;如果取......
  • 工业4.0时代:图像识别驱动制造业智能生产的未来
    在数字化革命的大潮中,工业4.0的到来标志着制造业将迎来全新的智能化时代。其中,图像识别技术作为一项核心技术,正引领着制造业实现了前所未有的智能生产。本文将深入探讨工业4.0时代下,图像识别是如何驱动制造业实现智能生产,并对未来的发展趋势进行展望。**数字化转型的浪潮**工业4.0......
  • python图像中如何 绘制矩形,编辑文案,保存结果图片等操作
    python版opencv函数学习笔记-cv.rectangle()全参数理解cv2.rectangle(img,pt1,pt2,color,thickness=None,lineType=None,shift=None)以下来自官方文档和自己的理解img:指定一张图片,在这张图片的基础上进行绘制;pt1:矩形的一个顶点;pt2:与pt1在对角线上相对的矩形的顶点;......