b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

图像处理学习步骤

电脑杂谈  发布时间:2021-01-08 20:19:15  来源:网络整理

一、最初想法

炉石传说卡牌
炉石传说卡牌,左上角是水晶费用,左下角是攻击力,右下角是血量。在学习机器学习的过程中,想利用卡牌的数据进行一些训练学习。但在卡牌数据录入的过程中感觉到繁琐,恰好老师叫我学习图像处理,在初步看了几本书后,仿照书中的车牌识别代码,初步想识别左上角的费用。

根据《MATLAB图像处理超级学习手册》这本书,根据我的个人理解,大致过程如下:
1.定位到目标区域;
2.根据第一步所得的目标区域对原图进行分割;
3.对分割的图像进行识别;
以下就这三个步骤进行我的代码展示说明。

因为目前感兴趣的只是水晶,首先就水晶的灰度组成要知道,因此使用Photoshop将目标直接抠图下来分析。根据书中的知识点,图片由红、绿、蓝三种分量组成,在matlab中表现为三维的矩阵,

[I2,map]=imread(filename);%读取文件
image2=I2;     
[m,n,d]=size(image2);     
figure(3),     
subplot(2,2,1)    
imshow(image2);
%颜色分布         
figure(3),     
subplot(2, 2, 2),     
imhist(image2(:,:,1)),    
title('红色分量');
figure(3),        
subplot(2, 2, 3),    
imhist(image2(:,:,2)),     
title('绿色分量');
figure(3),    
subplot(2, 2, 4),    
imhist(image2(:,:,3)),    
title('蓝色分量');

在这里插入图片描述

观察灰色直方图,或者可以执行以下代码

[reg_y,reg_x]=imhist(image2(:,:,1));%imhist函数还会返回y轴频次和x轴灰度
[green_y,green_x]=imhist(image2(:,:,2));
[blue_y,blue_x]=imhist(image2(:,:,3));

此处选择的灰度范围不是绝对的,我稍后会再次尝试该范围。

图像 分割_图像算法 分割_图像处理 分割

确定范围后,使用“过滤”程序在原始图像中显示晶体元素。

代码如下:

[I,map]=imread(filename);%测试的图是索引图,先转换成RGB的图像
image1=ind2rgb(I, map);
image_copy=image1;%先做一个复制   
[m,n,d]=size(image1);%读取图片矩阵的大小,维度,方便遍历
for i = 1:m            
	for j = 1:n               
            if (image1(i,j,1)>0.168&&image1(i,j,1)<0.223)                    		
            %image_copy(i,j,1)=image1(i,j,1);%这是另外一个处理方式,直接保留原图,但是最后效果不明显,遂作罢                    
            image_copy(i,j,1)=0;%变黑处理                 
            else                    
            image_copy(i,j,1)=1;                
            end                
            if (image1(i,j,2)>0.196&&image1(i,j,2)<0.424)                    
            %image_copy(i,j,2)=image1(i,j,2);                    
            image_copy(i,j,2)=0;                
            else                    
            image_copy(i,j,2)=1;               
            end                
            if (image1(i,j,3)>0.278&&image1(i,j,3)<0.836)                    
            %image_copy(i,j,3)=image1(i,j,3);                    
            image_copy(i,j,3)=0;                
            else                    
            image_copy(i,j,3)=1;                
            end                
            %蓝色尾处理                
            if (image1(i,j,3)>0.86)%这是调试之后发现面积太小,增加的代码 ,也可不作这种处理                   
            image_copy(i,j,1)=0;                    
            image_copy(i,j,2)=0;                    
            image_copy(i,j,3)=0;                
            end                
            %绿色尾处理                
            if (image1(i,j,2)>0.7&&image1(i,j,2)<0.96)                    
            image_copy(i,j,2)=0;                
            end            
        end                    
end

经过上述筛选后,目标图像的颜色将变为黑色。为了更简单明了,其他尚未变黑的像素将被统一消除并变成白色。

%二次处理        
for u = 1:m            
   for v = 1:n                  
      if image_copy(u,v,1)~=0                    
      image_copy(u,v,1)=1;                    
      image_copy(u,v,2)=1;                   
      image_copy(u,v,3)=1;                
      end                
      if image_copy(u,v,2)~=0                    
      image_copy(u,v,1)=1;                    
      image_copy(u,v,2)=1;                    
      image_copy(u,v,3)=1;                
      end                
      if image_copy(u,v,3)~=0                    
      image_copy(u,v,1)=1;                    
      image_copy(u,v,2)=1;                    
      image_copy(u,v,3)=1;                
      end            
    end
end

进行以下处理后,结果如图所示:

图像 分割_图像处理 分割_图像算法 分割

在这里插入图片描述

顺便说一句,数字也被扣除了,可能是因为我的范围已经包含数字了。

结论

因为我今年刚刚在土木工程中进行了交叉测试,所以我刚刚学习了,因此我必须从所有人那里学习代码质量。如果有任何错误,请多多包涵。我刚刚接触过这种图像处理,并且知识系统尚未完全构建。请指出任何错误。我一定会纠正它们并仔细研究。谢谢。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-346492-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...