Matlab坐标系加载特定图像背景——图像分析之行列普通统计学参数分析

先看效果需要的朋友可以继续看下面,不是你想要的效果就可以不看了(因为其他内容是我个人的总结难免会有不周全):

程序:

Image_Date=imread('Image.bmp')';   %Image.bmp为要加载的图片
[I,J]=size(Image_Date);               %如果坐标系背景倒立就在此下面加一句Image_Date'
X=1:I;
Y=1:J;
X_Mi=ones(I,1);
Y_Mi=ones(1,J);
X_Average=ones(I,1);
Y_Average=ones(1,J);
X_St=ones(I,1);
Y_St=ones(1,J);
for i=1:I
X_Mi(i,1)=min(Image_Date(i,:));
X_Average(i,1)=mean(Image_Date(i,:));
end
for j=1:J
Y_Mi(1,j)=min(Image_Date(:,j));
Y_Average(1,j)=mean(Image_Date(:,j));
end
AA=double(Image_Date);
for i=1:I
X_St(i,1)=std(AA(i,:));
end
for j=1:J
Y_St(1,j)=std(AA(:,j));
end
Image_Date(:,230)=0;
Image_Date(:,290)=0;
Image_Date(330,:)=0;
Image_Date(550,:)=0;
imshow(Image_Date');
hold on;
plot(X,X_Mi(:,1),'r--.',Y_Mi(1,:),Y,'r--',X,X_Average(:,1),'g--.',Y_Average(1,:),Y,'g--',X,X_St(:,1),'b--.',Y_St(1,:),Y,'b--');
axis([0 inf 0 inf]);
axis on;axis xy;
>> Image_Date=imread('Image.bmp')';   %Image.bmp为要加载的图片
[I,J]=size(Image_Date);               %如果坐标系背景倒立就把上一行’去掉,‘为矩阵转置的意思
X=1:I;
Y=1:J;
X_Mi=ones(I,1);
Y_Mi=ones(1,J);
X_Average=ones(I,1);
Y_Average=ones(1,J);
X_St=ones(I,1);
Y_St=ones(1,J);
for i=1:I
X_Mi(i,1)=min(Image_Date(i,:));
X_Average(i,1)=mean(Image_Date(i,:));
end
for j=1:J
Y_Mi(1,j)=min(Image_Date(:,j));
Y_Average(1,j)=mean(Image_Date(:,j));
end
AA=double(Image_Date);
for i=1:I
X_St(i,1)=std(AA(i,:));
end
for j=1:J
Y_St(1,j)=std(AA(:,j));
end
Image_Date(:,230)=0;
Image_Date(:,290)=0;
Image_Date(330,:)=0;
Image_Date(550,:)=0;
imshow(Image_Date');   %这句一下都是对坐标轴的描述

hold on;
plot(X,X_Mi(:,1),'r--.',Y_Mi(1,:),Y,'r--',X,X_Average(:,1),'g--.',Y_Average(1,:),Y,'g--',X,X_St(:,1),'b--.',Y_St(1,:),Y,'b--');
axis([0 inf 0 inf]);
axis on;axis xy;

在这儿我说明一下图像中红绿蓝分别表示图像行或者列灰度值的最小值,平均值,方差(.bmp格式的)

看了效果图我把加背景的单独说一下:

imshow(Image_Date);
hold on;
%这儿加你需要函数,如:plot()...(要在同一个背景的坐标系下显示不同的函数需要写成plot(x1,y1,'形状颜色(如:r-o)',x2,y2,...))不能写多个plot()
axis([0 inf 0 inf]);   %inf在这里就是跟随背景照片的长宽高做XY轴,可以根据实际情况把inf改为实际数(最好不要改),但是至少得大于背景照片的长宽值,否则图片背景加载不全
axis on;axis xy;

下面是我个人总结了:图像处理缺陷检测中统计参数(极值,平均数,方差,等)的形象化分析程序(Matlab版)、

程序1:

Image_Date=imread('Image.bmp');
[I,J]=size(Image_Date);
X=1:I;
Y=1:J;
X_Mi=ones(I,1);
Y_Mi=ones(1,J);
X_Average=ones(I,1);
Y_Average=ones(1,J);
X_St=ones(I,1);
Y_St=ones(1,J);
for i=1:I
X_Mi(i,1)=min(Image_Date(i,:));
X_Average(i,1)=mean(Image_Date(i,:));
end
for j=1:J
Y_Mi(1,j)=min(Image_Date(:,j));
Y_Average(1,j)=mean(Image_Date(:,j));
end
AA=double(Image_Date);
for i=1:I
X_St(i,1)=std(AA(i,:));
end
for j=1:J
Y_St(1,j)=std(AA(:,j));
end
Image_Date(:,230)=180;
Image_Date(:,290)=180;
Image_Date(330,:)=180;
Image_Date(550,:)=180;
Image_Date(:,226)=0;
Image_Date(:,251)=0;
Image_Date(:,271)=0;
Image_Date(:,296)=0;
Image_Date(:,261)=0;
Image_Date(:,361)=0;
imshow(Image_Date');
hold on;
plot(X,X_Mi(:,1),'r--',Y_Mi(1,:),Y,'r--',X,X_Average(:,1),'g--',Y_Average(1,:),Y,'g--',X,X_St(:,1),'b--',Y_St(1,:),Y,'b--',X,Image_Date(:,225),X,Image_Date(:,250),X,Image_Date(:,270),X,Image_Date(:,295),X,Image_Date(:,260),X,Image_Date(:,360));
axis([0 inf 0 inf]);
axis on;axis xy;
程序二:
驻点区域:
X:230,290:60像素
Y:330,550:220像素

matlab数据处理程序:


1.行平均:
 A=Q;
Average=ones(875,1);
for i=1:875
Average(i,1)=mean(A(i,:));
end
A(:,230)=180;
A(:,290)=180;
A(330,:)=180;
A(550,:)=180;
A(:,226)=0;
A(:,251)=0;
A(:,271)=0;
A(:,296)=0;
A(:,261)=0;
A(:,361)=0;
imshow(A');
hold on;
plot(X,Average(:,1),'r--.',X,A(:,225),X,A(:,250),X,A(:,270),X,A(:,295),X,A(:,260),X,A(:,360));
axis([0 inf 0 inf]);
axis on;axis xy;


2.行平均_行方差:
A=Q;
Average=ones(875,1);
for i=1:875
Average(i,1)=mean(A(i,:));
end
AA=double(A);
St=ones(875,1);
for i=1:875
St(i,1)=std(AA(i,:));
end
A(:,230)=180;
A(:,290)=180;
A(330,:)=180;
A(550,:)=180;
A(:,226)=0;
A(:,251)=0;
A(:,271)=0;
A(:,296)=0;
A(:,261)=0;
A(:,361)=0;
imshow(A');
hold on;
plot(X,Average(:,1),'r--',X,St(:,1),'b--',X,A(:,225),X,A(:,250),X,A(:,270),X,A(:,295),X,A(:,260),X,A(:,360));
axis([0 inf 0 inf]);
axis on;axis xy;


3.行最小值_行平均值_行方差:
A=Q;
Mi=ones(875);
Average=ones(875,1);
for i=1:875
Mi(i,1)=min(A(i,:));
Average(i,1)=mean(A(i,:));
end
AA=double(A);
St=ones(875,1);
for i=1:875
St(i,1)=std(AA(i,:));
end
A(:,230)=180;
A(:,290)=180;
A(330,:)=180;
A(550,:)=180;
A(:,226)=0;
A(:,251)=0;
A(:,271)=0;
A(:,296)=0;
A(:,261)=0;
A(:,361)=0;
imshow(A');
hold on;
plot(X,Mi(:,1),'r--',X,Average(:,1),'g--',X,St(:,1),'b--',X,A(:,225),X,A(:,250),X,A(:,270),X,A(:,295),X,A(:,260),X,A(:,360));
axis([0 inf 0 inf]);
axis on;axis xy;


3——1扩大兼容版本:
 A=Q;
[I,J]=size(A);
X=1:I;
Y=1:J;
Mi=ones(I);
Average=ones(I,1);
for i=1:I
Mi(i,1)=min(A(i,:));
Average(i,1)=mean(A(i,:));
end
AA=double(A);
St=ones(I,1);
for i=1:I
St(i,1)=std(AA(i,:));
end
A(:,230)=180;
A(:,290)=180;
A(330,:)=180;
A(550,:)=180;
A(:,226)=0;
A(:,251)=0;
A(:,271)=0;
A(:,296)=0;
A(:,261)=0;
A(:,361)=0;
imshow(A');
hold on;
plot(X,Mi(:,1),'r--',X,Average(:,1),'g--',X,St(:,1),'b--',X,A(:,225),X,A(:,250),X,A(:,270),X,A(:,295),X,A(:,260),X,A(:,360));
axis([0 inf 0 inf]);
axis on;axis xy;

3——X轴通用版本:
A=Q;
[I,J]=size(A);
X=1:I;
Y=1:J;
X_Mi=ones(I);
X_Average=ones(I,1);
X_St=ones(I,1);
for i=1:I
X_Mi(i,1)=min(A(i,:));
X_Average(i,1)=mean(A(i,:));
end
AA=double(A);
for i=1:I
X_St(i,1)=std(AA(i,:));
end
A(:,230)=180;
A(:,290)=180;
A(330,:)=180;
A(550,:)=180;
A(:,226)=0;
A(:,251)=0;
A(:,271)=0;
A(:,296)=0;
A(:,261)=0;
A(:,361)=0;
imshow(A');
hold on;
plot(X,X_Mi(:,1),'r--',X,X_Average(:,1),'g--',X,X_St(:,1),'b--',X,A(:,225),X,A(:,250),X,A(:,270),X,A(:,295),X,A(:,260),X,A(:,360));
axis([0 inf 0 inf]);
axis on;axis xy;


其中直线为探测线(画图像是需要在X或Y坐标上加1),可通过对.pmb格式文件的二值化值进行行列拟合画线清楚的从图像中看出缺陷边缘的图像变化,有利的数学参数形象化,分析一些常规的图像灰度值统计参数的变化。在缺陷出可以清楚的看到其灰度值趋近于0,从而平均数也相应变化,方差增大,。。。要是检测是否存在这种类似缺陷可以通过这些参数进行约定检测,可以达到傅里叶变换与小波分析的类似的效果,检测局域图像数据的变化。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值