【问题标题】:MATLAB focus measure for imagesMATLAB 图像焦点测量
【发布时间】:2015-02-03 10:27:46
【问题描述】:

我正在尝试学习如何查找图像是否在焦点上并将它们从图像列表中删除。这些图像的分辨率非常高(jp2),我正在尝试使用我在 MATLAB 网站http://www.mathworks.com/matlabcentral/fileexchange/27314-focus-measure/content/fmeasure/fmeasure.m 中找到的代码 我正在尝试使用以下功能

WSize = 15; % Size of local window (only some operators)

case 'SFIL' %Steerable filters (Minhas2009)
% Angles = [0 45 90 135 180 225 270 315];
N = floor(WSize/2);
sig = N/2.5;
[x,y] = meshgrid(-N:N, -N:N);
G = exp(-(x.^2+y.^2)/(2*sig^2))/(2*pi*sig);
Gx = -x.*G/(sig^2);Gx = Gx/sum(Gx(:));
Gy = -y.*G/(sig^2);Gy = Gy/sum(Gy(:));
R(:,:,1) = imfilter(double(Image), Gx, 'conv', 'replicate');
R(:,:,2) = imfilter(double(Image), Gy, 'conv', 'replicate');
R(:,:,3) = cosd(45)*R(:,:,1)+sind(45)*R(:,:,2);
R(:,:,4) = cosd(135)*R(:,:,1)+sind(135)*R(:,:,2);
R(:,:,5) = cosd(180)*R(:,:,1)+sind(180)*R(:,:,2);
R(:,:,6) = cosd(225)*R(:,:,1)+sind(225)*R(:,:,2);
R(:,:,7) = cosd(270)*R(:,:,1)+sind(270)*R(:,:,2);
R(:,:,8) = cosd(315)*R(:,:,1)+sind(315)*R(:,:,2);
FM = max(R,[],3);
FM = mean2(FM);

我不明白 WSize=15 是如何确定的,这与数据有关还是仅与 MATLAB 中的窗口大小有关?我也不明白这两行是如何确定的

N = floor(WSize/2);
sig = N/2.5;

2.5 是标准偏差还是从数据中确定的某个值?我知道这不完全是一个 MATLAB 问题,而更多是一个焦点测量问题,但我希望有人使用过这段代码,可以帮助我破译 WSize、N 和 sig 值是如何确定的。另外,如果有人能提出更好的查找方法图像的焦点,我也会很感激。

提前谢谢你。

【问题讨论】:

    标签: matlab focus imaging


    【解决方案1】:

    我的理解是WSize是任意设置的。邻域的大小应适应图像的大小和分辨率。 sig=2.5 产生标准差为 2.5 的正态分布。

    Matlab 中没有任何东西可以强制使用这些参数。我阅读了代码中提到的文章(需要订阅)。它声称他们使用 5x5 的窗口大小来获得结果。它参考了一篇(IMO,更好)关于可控滤波器的论文 (freely available from the MIT)。

    【讨论】:

      猜你喜欢
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      相关资源
      最近更新 更多