MATLAB--数字图像处理 击中击不中变换

简介: MATLAB--数字图像处理 击中击不中变换

击中击不中变换

原理

击中击不中变换(HMT)需要两个结构元素B1和B2,合成一个结构元素对B=(B1,B2)

一个用于探测图像内部,作为击中部分;另一个用于探测图像外部,作为击不中部分。显然,B1和B2是不应该相连接的,即B1∩B2=Φ。击中击不中变换的数学表达式为:

g(x, y)=hitmiss[f(x, y), B]=erode[f(x, y), B1]AND erode[fc(x, y), B2]

其中,fc(x,y)表示的是f(x,y)的补集。

作用

击中击不中变换就是在A图像上找到和B图像一致的那块区域,举个例子就是:你拿着一张A图片的一部分,你需要在A图像上找到这张图片在A图片上的位置在哪

算法步骤

  1. 这里把A图像作为原图像 B图像是目标形状,这里我们将B作为结构元素
  2. 建立一个比B大的模板W,计算出模板V (W-B),这里是为了满足原理中B1、B2无交集的条件
  3. 用B作为结构元素对A进行腐蚀
  4. 用V作为结构元素对A的补集进行腐蚀
  5. 取两张腐蚀后图片的交集

举例分析
在A图中寻找B图所示的图像目标的位置
在这里插入图片描述
步骤:

1、确定结构元素

既然是寻找图B所示形状,选取H为图B所示的形状。再选一个小窗口W,W包含H,M=W-H。如下图所示:
在这里插入图片描述
2、求H对A的腐蚀结果
在这里插入图片描述
3、求M对A补集的腐蚀
在这里插入图片描述
4.两张腐蚀图片求交集

图片Y中左上角那个红点就是B在A中的位置
在这里插入图片描述
MATLAB实战

t=zeros(500,500);

for i=100:200
for j=100:200
t(i,j)=1;
end
end

for i=70:140
for j=370:440
t(i,j)=1;
end
end

for i=300:400
for j=300:480
t(i,j)=1;
end
end

imshow(t);%构造原图

m=zeros(100,100);

for i=1:100
for j=1:100
m(i,j)=1;
end
end

figure,imshow(m);%构造m结构元素

n=zeros(120,120);

for i=1:120
for j=1:120
n(i,j)=1;
end
end

for i=10:110
for j=10:110
n(i,j)=0;
end
end

figure,imshow(n);%构造n结构元素 与m交集为空

x1=imerode(t,m);
figure,imshow(x1);%原图被m结构元素腐蚀后
x2=imerode(~t,n);
figure,imshow(x2);%原图补集被n结构元素腐蚀后

x3=x1.*x2;
figure,imshow(x3);%求两张腐蚀后图像的交集

结果图

1.原图
原图A
2.m对A腐蚀后
在这里插入图片描述
3.n对A补集腐蚀后
在这里插入图片描述
4.两张腐蚀图求交集后

图中左上角就是B在A中的位置
在这里插入图片描述
总结

  • 这里击中击不中变换还是有点难理解,至于为什么进行两次腐蚀,就可以找到B在A中的位置,这里就不讨论了,反正我们只需要知道进过这样的运算可以得到结果即可(这里其实自己对那个变换公式原理有点不是很理解)
  • 这里有个很大的坑,就是如果按照原理上的图进行变换,是得不到最终答案的。其原因就是在MATLAB中,白色是1,黑色是0。在课本上,定义的结构元素有效值是1,也就是白色,而上面原理包括课本上则是默认黑色进行腐蚀的。所以,为了验证原理,我们只需要将颜色反转即可(黑变白,白变黑)。
  • 这里对腐蚀、膨胀一定要理解清楚,特别是结构体元素有效值为1,MATLAB中1是白色,我被这个坑惨了
  • 击中击不中的用处就是 在图像A中寻找图像B在A中的位置
目录
相关文章
|
4月前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
4月前
|
算法
基于小波多普勒变换的回波信号检测matlab仿真
基于小波多普勒变换的回波信号检测matlab仿真
|
4月前
|
算法 计算机视觉
【MATLAB 】 EMD信号分解+希尔伯特黄变换+边际谱算法
【MATLAB 】 EMD信号分解+希尔伯特黄变换+边际谱算法
142 0
|
4月前
|
算法 计算机视觉
【MATLAB 】 EEMD 信号分解+希尔伯特黄变换+边际谱算法
【MATLAB 】 EEMD 信号分解+希尔伯特黄变换+边际谱算法
277 0
|
4月前
|
算法 计算机视觉
【MATLAB 】 EWT 信号分解+希尔伯特黄变换+边际谱算法
【MATLAB 】 EWT 信号分解+希尔伯特黄变换+边际谱算法
130 0
|
4月前
|
算法 数据处理 计算机视觉
【MATLAB 】 MODWT 信号分解+希尔伯特黄变换+边际谱算法
【MATLAB 】 MODWT 信号分解+希尔伯特黄变换+边际谱算法
79 0
|
4月前
|
算法 计算机视觉
【MATLAB 】 VMD 信号分解+希尔伯特黄变换+边际谱算法
【MATLAB 】 VMD 信号分解+希尔伯特黄变换+边际谱算法
196 0
|
4月前
|
机器学习/深度学习 并行计算 算法
霍夫变换椭圆检测(matlab仿真与图像处理系列第2期)
霍夫变换椭圆检测(matlab仿真与图像处理系列第2期)
215 0
|
3月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```
|
3月前
|
机器学习/深度学习 算法
基于BP神经网络和小波变换特征提取的烟草香型分类算法matlab仿真,分为浓香型,清香型和中间香型
```markdown 探索烟草香型分类:使用Matlab2022a中的BP神经网络结合小波变换。小波分析揭示香气成分的局部特征,降低维度,PCA等用于特征选择。BP网络随后处理这些特征,以区分浓香、清香和中间香型。 ```

热门文章

最新文章