如何用matlab计算基于平均滤波器的强度不均匀性

时间:2014-09-20 07:35:39

标签: matlab image-processing

我对强度不均匀性有疑问。我读了一篇论文,它定义了一种基于平均滤波器计算强度不均匀性的方法: enter image description here

让我看看我的问题,我有一个图像I(下面的代码)和一个r = 3的平均过滤器。我想根据公式(17)计算图像变换J.你能帮我用matlab代码实现吗?非常感谢。

这是我的代码

%Create image I
I=[3    5   5   2   0   0   6   13  1
0   3   7   5   0   0   2   8   6
4   5   5   4   2   1   3   5   9
17  10  3   1   3   7   9   9   0
7   25  0   0   5   0   10  13  2
111 105 25  19  13  11  11  8   0
103 105 15  26  0   12  2   6   0
234 238 144 140 51  44  7   8   8
231 227 150 146 43  50  8   16  9
];
%% Create filter AF
size=3;    % scale parameter in Average kernel
AF=fspecial('average',[size,size]); % Average kernel
%%How to calculate CN and J 
CN=mean(I(:));%Correct?
J=???

1 个答案:

答案 0 :(得分:1)

你很亲密!平均强度计算正确;所有你缺少的计算J是将fspecial定义的过滤器应用于你的图像:

以下是代码:

clc
clear

%Create image I
I=[3    5   5   2   0   0   6   13  1
0   3   7   5   0   0   2   8   6
4   5   5   4   2   1   3   5   9
17  10  3   1   3   7   9   9   0
7   25  0   0   5   0   10  13  2
111 105 25  19  13  11  11  8   0
103 105 15  26  0   12  2   6   0
234 238 144 140 51  44  7   8   8
231 227 150 146 43  50  8   16  9
];

% Create filter AF
size=3;    % scale parameter in Average kernel
AF=fspecial('average',[size,size]); % Average kernel

%%How to calculate CN and J 
CN=mean(I(:)); % This is correct

J = (CN*I)./imfilter(I,AF); % Apply the filter to the image

figure;

subplot(1,2,1)
image(I)

subplot(1,2,2)
image(J)

导致以下结果:

enter image description here