第八周总结


    经过前几周的学习,学习步入正轨,通过阅读书籍和网上查询基本上学会了使用matlab软件。老师让我们自己找方向,但是前段时间有点迷茫,着实浪费了不少时间。
    1、下面为BP神经网络训练的代码:
   
function [XALL,yALL ] = BuildDataSet(  )
%从存放正度样本图片的文件夹中构造正负样本集

for i=1:156
    %读取图像
    image_toRead_name=strcat('F:\学\matlab\风机桨叶样本及代码\标准清晰截图(正)\test (',num2str(i),')');
    image_toRead_name=strcat(image_toRead_name,'.png');
    
    %读取图像
    OriImage=imread(image_toRead_name);
    OriImage=double(OriImage)/255;
    
    %处理图像
    OriImage=imresize(OriImage,[25 25]);
    
    %灰度矩阵转列向量(逐列扫描)
     XALL(:,i)=reshape(OriImage,625,1);
     yALL(:,i)=1;
end

for i=1:967
    %读取图像
    image_toRead_name=strcat('F:\学\matlab\风机桨叶样本及代码\标准清晰截图(负)\test (',num2str(i),')');
    image_toRead_name=strcat(image_toRead_name,'.png');
    
    %读取图像
    OriImage=imread(image_toRead_name);
    OriImage=double(OriImage)/255;
    %处理图像
    OriImage=imresize(OriImage,[25 25]);
    %灰度矩阵转列向量(逐列扫描)
    XALL(:,i+156)=reshape(OriImage,625,1);
    yALL(:,i+156)=0;
end

XALL=XALL';
yALL=yALL';

end



使用BP神经网络识别绝缘子,BP神经网络需要手动寻找正样图片大小,样本是手动截取的大小不定,在用imread读取图像之后,需要用imresize来规范图片大小。

2、在后选出结果的阶段,运用了滑窗算法,算法如下:

function [  ] = temp(image_toRead_name)
%给一幅图像的路径,对这幅图像进行识别
    

   
    %读取图像
    image=imread(image_toRead_name);
%     image=rgb2gray(image);
    image=double(image)/255;
    
    imagelong=size(image,2);
    imagewidth=size(image,1);

location=[];
for width=54:60
    for i=1:7:imagewidth-width
        for j=1:7:imagelong-width
            tempImage=image(i:i+width-1,j:j+width-1);
            %灰度矩阵转列向量(逐列扫描)
            tempImage=Resize(tempImage, 25,25 );
            X=reshape(tempImage,25*25,1);
            result=PredictNewData( X');
            if result>=0.8
                location=[location;i,j,i+width,j+width,result];
            end
                     
        end
    end
end

         index=nms(location, 0.1);
         location=location(index,:);

         for num=1:size(location,1)
            x=location(num,1);
            y=location(num,2);
            width=location(num,3)-x;
            for ii=x:x+width
                image(ii,y)=1;
                image(ii,y+width)=1;
            end
            for jj=y:y+width
                image(x,jj)=1;
                image(x+width,jj)=1;
            end
         end
%          A=image(x:x+width,y:y+width);
%         temp1(A,image_toRead_name);
% imshow(A);

%              保存图像
            image_toSave_name=strcat(image_toRead_name,'识别结果(8)');
            image_toSave_name=strcat(image_toSave_name,'.jpg');
% image_toSave_name=' F:\绝缘子2.0\绝缘子均衡化后的大图\';
% image_toSave_name=strcat(image_toSave_name,num2str(k),'.jpg');
            imwrite(image,image_toSave_name);
%          

end


滑窗算法存在的问题:因训练样本不足,图像处理不是很好,不能全部识别不出绝缘子,总是有所遗漏就如这样

有的更会识别错误,就如这样:

由于程序决定,识别图片所花时间会随图片的大小而发生变化,图片越大花费时间越长,效率越多。

改进想法:1、寻找新的算法;2、更改滑窗的循环方式以减小花费时间,3、在不减少图片特征的情况下减小图片的大小。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值