簡體   English   中英

如何通過Matlab基於平均濾波器計算強度不均勻性

[英]How to calculate intensity inhomogeneity based on average filter by matlab

我有一個關於強度不均勻性的問題。 我讀了一篇論文,它定義了一種基於平均濾波器來計算強度不均勻性的方法: 在此處輸入圖片說明

讓我們看看我的問題,我有一個圖像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=???

你很親密! 平均強度計算正確; 計算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)

結果如下:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM