2019-09-24 10:59:51 jiDxiaohuo 阅读数 153

简介

形态学只适用于Region操作 或者是二值化后的图片
需要延伸到灰度形态学才能广泛应用
拓展到灰度级形态学后 结构元的表达形式可以大致分为以下两类 不平坦结构元 平坦结构元

  • 不平坦结构元:结构元内灰度级根据位置不同而变换 灰度剖面不平坦
  • 平坦结构元:平坦结构元处处灰度级相同 灰度剖面平坦

在这里插入图片描述

膨胀 腐蚀

腐蚀

当平坦结构元B原点在(x,y)处时,用一个平坦结构元对图像f进行腐蚀定义为f与b重合区域的最小值 (非线性操作,不可逆)

在这里插入图片描述
注:如果使用的是不平坦结构元 则公式应变为下式,从公式可以看出来当不平坦结构元值过大就会导致F影响很小,同理 非平坦结构元膨胀也一样 导致最终得出的图片很难解释,所以很少使用非平坦结构元
在这里插入图片描述

膨胀

当平坦结构元B原点在(x,y)处时,用一个平坦结构元对图像f进行膨胀定义为f与b重合区域的最大值 (非线性操作,不可逆)

在这里插入图片描述

开运算 闭运算

开运算 闭运算 与 形态学之前定义的一样 最终结果可以从下图理解

开运算:结构元在灰度剖面下面滑动 每次原点处灰度值取结构元覆盖处最小值
闭运算: 结构元在灰度剖面上面滑动 每次原点处灰度值取结构元覆盖处最大值
在这里插入图片描述

待续

一些基本的灰度级形态学算法

形态学平滑

形态学梯度

顶帽变换 底帽变换

灰度级形态学重建

2013-12-10 10:46:47 jxlijunhao 阅读数 6148
图像中结构张量的求法(Structure Tensor)
Last Edit 2013/12/10
1.结构张量的作用:
      能够区分图像中的平坦区域,边缘,角点;
2.图像中的结构张量的定义
   1)是一个矩阵;
   2)与图像的水平,垂直梯度有关,定义如下:

在MATLAB中,可以用如下语句求解:[Ix,Iy]=gradient(Image);

3)求出结构张量矩阵的行列式,和迹(矩阵对角线之和)
  行列式:K=det(E);
  迹:       H=trace(E);


以下代码来源于网络,注释除外
clear all;
close all;
clc;
I=imread('lena.jpg');
img=double(I);
[m,n]=size(img);

[Ix,Iy]=gradient(img);  %求出图像的梯度
Ix2=Ix.^2;
Iy2=Iy.^2;
Ixy=Ix.*Iy;

k=1;
lambda=zeros(m*n,2);   %用于存储结构张量中的行列式与迹

for i=1:m
    for j=1:n
        st=[Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];%结构张量
        K=det(st);  % 行列式
        H=trace(st);%求迹
        
        if H<50
            I(i,j)=255;
        end
        if H>50 &&abs(K)<0.01*10^(-9)
            I(i,j)=100;
        end
        
         if H>50 &&abs(K)>0.01*10^(-9)
            I(i,j)=50;
         end
        lambda(k,:)=[K H];
        k=k+1;
    end
end
figure;
plot(lambda(:,1),lambda(:,2),'.');
ylabel('trace');
xlabel('det');
figure;
imshow(I)





      


 
2018-11-07 19:32:24 TY_9527 阅读数 1204

在数学中,结构张量(也称为第二矩矩阵)是从函数的梯度导出的矩阵。它总结了一个点的指定邻域中梯度的主要方向,以及这些方向是连贯的程度。结构张量常用于图像处理和计算机视觉。————维基百科

结构张量能区分图像的平坦区域、边缘区域与角点区域。

结构张量就是一个关于图像的结构矩阵,如下所示

Ix,Iy分别表示图像的水平梯度与垂直梯度。而后分别用K与H表示矩阵ST的行列式与迹。

根据所求的K与H的值,可判断当前像素点所处的位置是属于平坦区域、边缘区域和角点区域中的一个。

判断的条件:

平坦区域:H = 0;

边缘区域:H > 0 && K = 0;

角点区域:H > 0 && K > 0;

然而在实际应用中,H与K的值都不会太理想,所以用的是近似判断。

效果如下:

原图:

边缘区域:

平坦区域:

角点区域:

行列式与迹的关系:

matlab代码如下所示:

%Image Structure Tensor 图像结构张量

close all;
clc;

I = double(rgb2gray(imread('lena.jpg')));
%figure;
%imshow(I);
[m,n] = size(I);



%the gradient of image
[Ix,Iy] = gradient(I);

%second derivative
Ix2 = Ix.^2;
Iy2 = Iy.^2;
Ixy = Ix.*Iy;


k = 1;
%relationship between det and trace
lam = zeros(m*n,2);

for i = 1:m
    for j = 1:n
        %Structure Tensor Matrix
        ST = [Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];
        K = det(ST);    %det of ST
        H = trace(ST);  %trace of ST
        
%       if H < 50                                   %smooth area
%          I(i,j) = 255;
%       end
            
%         if H > 50 && abs(K) < 0.01*10^(-9)        %marginal area
%            I(i,j) = 255;
%         end
          
      if H > 50 && abs(K) > 0.01*10^(-9)            %corner are
          I(i,j) = 255;
      end           
            
        lam(k,:) = [K,H];
        k = k + 1;
    end
end

figure;
plot(lam(:,1),lam(:,2),'.');
ylabel('trace');
xlabel('det');

figure;
imshow(I,[]),title('corner area');   %自动调整输出格式

 

2018-09-26 11:33:00 a63344765723588 阅读数 7

结构张量(structure tensor) 主要用于区分图像的平坦区域、边缘区域与角点区域。

此处的张量就是一个关于图像的结构矩阵,矩阵结构构成如下:

                                                                           

Rx,Ry分别为图像的水平与垂直梯度,而后进行求矩阵T的行列式K与迹(trace)H。

根据K与H的关系来求得区分图像的平坦、边缘与角点区域:

 

平坦区域:H=0;

边缘区域:H>0 && K=0;

角点区域:H>0 && K>0;

 

该方法实际应用实例如下:

原图:    

                                

边缘区域:

                              

边缘区域中 行列式与迹的关系图:

                                                   

matlab实现代码如下:

clc;
clear; 
img=double(imread('F:\Users\Revere\Pictures\CameraRoll\imgwork\smile.png'));
[m n]=size(img);
imshow(img,[]);

[Ix Iy]=gradient(img);
Ix2=Ix.^2;
Iy2=Iy.^2;
Ixy=Ix.*Iy; 

k=1;
lambda=zeros(m*n,2);
for i=1:m    
    for j=1:n       
       st=[Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)]; %结构张量        
       K=det(st);        
       H=trace(st); %求迹                
       %所有判断都是近似的        
       % if H<50                        %认为是平坦区域         
       if H>50 && abs(K)<0.01*10^(-9)  %认为是边缘区域      
       % if H>50 && abs(K)>0.01*10^(-9) %认为是角点区域       
       img(i,j)=255;         
   end                 
  lambda(k,:)=[K,H];       
  k=k+1; 
   end
end 

figure;
plot(lambda(:,1),lambda(:,2),'.');
ylabel('trace');
xlabel('det');
figure;
imshow(img,[]);

  

 

转载于:https://www.cnblogs.com/revere7/p/9705956.html

2019-08-23 07:05:45 fengshengwei3 阅读数 31

目录

 

一 基础知识

1.形态学是什么?

2.形态学包括什么?

3.形态学图像处理原理

4.什么是结构元?

5.平坦/不平坦结构元

二 腐蚀

1.二值图像腐蚀

2.腐蚀【灰度图像平坦结构元】

3.腐蚀【灰度图像非平坦结构元】

4.腐蚀示例

三 膨胀

1.膨胀【二值图像】

2.膨胀【灰度图像平坦结构元】

3. 膨胀【灰度图像非平坦结构元】

4.膨胀示例

四 其他形态学操作

1.开运算

2.闭运算

3.形态学平滑

4.顶帽运算

5.黑帽运算

6.击中击不中

7.形态学梯度


一 基础知识

1.形态学是什么?

形态学是生物学的一个分支,主要研究动植物的形态和结构,图像处理领域用形态学数学处理工具来提取表达和描绘区域形状的有用图像分量,如边界,骨架等

2.形态学包括什么?

常用的有腐蚀、膨胀、开运算、闭运算、击中击不中、 梯度运算、顶帽、底帽

3.形态学图像处理原理

说明:

  • 首先对原图边界进行扩充,使结构元B完全包括在A中,如A最外围的一圈白色方框
  • 形态学图像处理都是集合运算,所以只需要搞懂每个操作的数学定义即可
  • 都是结构元对原图像进行的集合操作

 

4.什么是结构元?

研究一幅图像中感兴趣特性所用的小集合或子图像

5.平坦/不平坦结构元

通俗说明:

结构元的值存在不同灰度级的为不平坦结构元(如下图中的1)

结构元的值都一致的不平坦结构元(如下图中的2)

二 腐蚀

1.二值图像腐蚀

计算过程如下

举例如下

 

2.腐蚀【灰度图像平坦结构元】

计算过程如下

3.腐蚀【灰度图像非平坦结构元】

计算过程如下

4.腐蚀示例

不同结构元尺寸对应的腐蚀效果如下所示

三 膨胀

1.膨胀【二值图像】

计算过程如下

2.膨胀【灰度图像平坦结构元】

计算过程如下

3. 膨胀【灰度图像非平坦结构元】

计算过程如下

4.膨胀示例

不同结构元尺寸对应的效果如下

四 其他形态学操作

1.开运算

开运算示例

2.闭运算

闭运算示例

3.形态学平滑

4.顶帽运算

5.黑帽运算

6.击中击不中

7.形态学梯度

形态学梯度运算举例如下

 

没有更多推荐了,返回首页