Image Processing - Absolute sum of the differences employing a weighted kernel

2 Ansichten (letzte 30 Tage)
Dear all,
I hope you can help. I am trying to replicate an alghoritm (for target detection) found in a research paper:
Unfortunately, I am stuck with an equation (see Eq. 20 and 21 in the link above), and I would grately appreciate your help.
I have an image, let's call it I (I=5x5).
I performed a Top-hat transform and now I need to apply a 'Local Difference Criterion'.
I created four direction vectors centered at I(i,j), where i and j are the coordinates of the central pixel. The four vectors are defined as:
L1=[I(i-2,j-2),I(i-1,j-1),I(i+1,j+1),I(i+2,j+2)];
L2=[I(i,j-2),I(i,j-1),I(i,j+1),I(i,j+2)];
L3=[I(i+2,j-2),I(i+1,j-1),I(i-1,j+1),I(i-2,j+2)];
L4=[I(i-2,j),I(i-1,j),I(i+1,j),I(i+2,j)];
Now, I need to calculate the sum of the differences in gray values between I(i+x,j+y) and I(i,j) as follows:
where Wx,y is the weighted kernel to describe the absolute difference between I(i+x,j+y) and I(i,j), and is equal to:
Would anyone be able to help me with writing a code to accomplish the above?
Thanks a lot in advance
  3 Kommentare
Simone A.
Simone A. am 1 Mai 2023
Hi Matt, thanks for getting back to me. That's another reason why I found it difficult to solve it. I don't understand the notation on the actual paper linked above. Did you see the actual paper? Was it clear for you?
Image Analyst
Image Analyst am 1 Mai 2023
Bearbeitet: Image Analyst am 1 Mai 2023
An image of 5x5 is too small for this. Let's hope you made a mistake when you said "I have an image, let's call it I (I=5x5)". I've attached a manual filtering demo. You can build in the weights into it.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Matt J
Matt J am 1 Mai 2023
Bearbeitet: Matt J am 1 Mai 2023
There are problems with the mathematical formulation, as noted in the comments above. However, for the general task of computing shift-invariant weighted differences, I would set it up like the following:
L(1).deltaX=[-2 -1 1 2]
L(1).deltaY=[-2 -1 1 2]
L(1).weight=rand(1,4);
L(2).deltaX=[0 0 0 0]
L(2).deltaY=[-2 -1 1 2]
L(2).weight=rand(1,4);
...
clear d
for i=numel(L):-1:1
tmp=0;
for j=1:4
x=L(i).deltaX(j); y=L(i).deltaY(j); wxy=L(i).weight(j);
tmp=tmp+wxy*abs(circshift(I,[x,y])-I);
end
d(:,:,i)=tmp;
end

Weitere Antworten (0)

Kategorien

Mehr zu Mathematics and Optimization finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by