MATLAB中簇的形成
我正在研制一种双向切换滤波器。。在这种情况下,它们形成了像素簇来检测图像中的边缘。他们使用了排序象限中值向量 代码: %簇的形成MATLAB中簇的形成,matlab,image-processing,Matlab,Image Processing,我正在研制一种双向切换滤波器。。在这种情况下,它们形成了像素簇来检测图像中的边缘。他们使用了排序象限中值向量 代码: %簇的形成 if((((m1 < avg) && (m4 < avg))&&((m2 >= avg) && (m3 >= avg))) || (((m2 < avg) && (m3 < avg))&&((m1 >= avg) && (m4 &
if((((m1 < avg) && (m4 < avg))&&((m2 >= avg) && (m3 >= avg))) || (((m2 < avg) && (m3 < avg))&&((m1 >= avg) && (m4 >= avg))))
p=i+2;
q=j+2;
vec=[L(p-2,q) L(p-1,q) L(p+1,q) L(p+2,q)]; % Vertical edge
dav=double(sum(vec)/4);
%disp('vertical edge');
elseif((((m3 < avg) && (m4 < avg))&&((m1 >= avg) && (m2 >= avg))) || (((m1 < avg) && (m2 < avg))&&((m3 >= avg) && (m4 >= avg))))
p=i+2;
q=j+2;
vec=[L(p,q-2) L(p,q-1) L(p,q+1) L(p,q+2)]; % Horizontal edge
dav=double(sum(vec)/4);
%disp('horizontal edge');
elseif((((m1 < avg) && (m3 < avg))&&((m2 >= avg) && (m4 >= avg))) || (((m2 < avg) && (m4 < avg))&&((m1 >= avg) && (m3 >= avg))))
p=i+2;
q=j+2;
vec=[L(p-1,q+1) L(p-1,q-1) L(p+1,q-1) L(p+1,q+1)]; % Diagonal line
dav=double(sum(vec)/4);
%disp('diagonal line');
end
if(((m1=avg)和((m3>=avg))和((m2=avg)和((m4>=avg)))
p=i+2;
q=j+2;
向量=[L(p-2,q)L(p-1,q)L(p+1,q)L(p+2,q)];%垂直边缘
dav=双倍(总和(vec)/4);
%disp(“垂直边缘”);
其他(((m3=avg)和((m2>=avg))和((m1=avg)和((m4>=avg)))
p=i+2;
q=j+2;
向量=[L(p,q-2)L(p,q-1)L(p,q+1)L(p,q+2)];%水平边
dav=双倍(总和(vec)/4);
%disp(“水平边缘”);
其他(((m1=avg)和((m4>=avg))和((m2=avg)和((m3>=avg)))
p=i+2;
q=j+2;
向量=[L(p-1,q+1)L(p-1,q-1)L(p+1,q-1)L(p+1,q+1)];%对角线
dav=双倍(总和(vec)/4);
%disp(“对角线”);
结束
m1、m2、m3和m4为中间值。。这样做对吗
请解释这些,并向我推荐一本与MATLAB图像处理相关的书籍/指南我假设m1、m2、m3、m4取自您之前的一个问题,意思是 它们是5x5窗口的3x3子窗口的中间 也就是说,它们形成如下矩阵:
m1 m2
m4 m3
或者在一些类似的配置中
也就是说,第一个“if”分支表示:如果m1和m4中间值都小于平均值,并且m2和m3都大于平均值(或者发生完全相反的情况),则在特定的5x5子窗口中应从左到右发生急剧变化。(请记住,中值过滤掉任何单个峰值,这意味着即使图像有噪声,也不会检测到太多假边缘。)至于vec
vec=[L(p-2,q) L(p-1,q) L(p+1,q) L(p+2,q)]; % Vertical edge
只存储搜索窗口的垂直中点。我认为它在这种形式下不起作用,我认为存储边缘索引在这里更有意义:
vec=[[i:i+4]', repmat(j+2, 5, 1)];
这将是五个边缘点的坐标,其中假设边缘在当前搜索窗口的中间从上到下。(您也可以手动检查。)
“elseif”的工作原理与此类似 关于图像处理的起点,我可以向您推荐一本加里·布拉德斯基(Gary Bradski)和阿德里安·凯勒(Adrian Kaehler)写的名为“学习OpenCV”的书,尽管这不是一本Matlab的书。如果你不阅读书中的C++程序和OpenCV的详细描述,你仍然可以得到相当好的关于图像处理的一般知识,或者至少你会熟悉主要概念。p>至于Matlab的细节,我建议您通读图像处理工具箱的全部帮助。听起来,我认为学习图像处理只有一条艰难的道路。@Barnabas Szabolcs,谢谢Help@BarnabasSzabolcs,请帮忙再次非常感谢。。谢谢你的好意