0

Say I have the following two matrices:

>> x = [1 4 3; 6 4 3; 6 9 3; 2 4 3; 5 4 0; 5 3 1; 6 4 7];
>> y = [0 0 1; 1 1 0; 1 1 0; 0 1 1; 0.2 0.8 0.54; 1 1 1; 0 0 0];

Where you can think of x as some image, and y as the degree of membership of each element of x to some region of interest.

Say I set those elements in x that have degree of membership = 1 to 1 (core) and the other elements to 0 as follows:

x = zeros(size(y));
x(y==1) = 1;

In which case I will have the following output:

     0     0     1
     1     1     0
     1     1     0
     0     1     1
     0     0     0
     1     1     1
     0     0     0

Now, for the elements of 0, I substitute their values with the value of y in the corresponding location as follows:

x(x==0)=y(x==0);

Now, I select those pixels that are considered 4-neighbours of core but not in core as follows:

four_neighbourhood_pixels = imdilate(core, strel('diamond', 1)) - core;

My question is: how can we select a pixel p that belongs to four_neighbourhood_pixels that minimizes the distance between x & core?

Provided that for distance I calculate it as follows:

pdist([x,core],'minkowski');

Provided that x in the preceding command will be the matrix after substituting the zeros with the degree of membership values y i the corresponding location?

So, how can I select that pixel that belongs to four_neighbourhood_pixels that minimizes the distance between x with the zeros substituted and core?

Thanks.

Simplicity
  • 47,404
  • 98
  • 256
  • 385

1 Answers1

0

If I understand correctly, core is the following matrix:

 0     0     1
 1     1     0
 1     1     0
 0     1     1
 0     0     0
 1     1     1
 0     0     0

First find the distance between x and core.

dist=pdist([x,core],'minkowski');
dist1=squareform(dist);
[row1,row2]=find(dist1==min(dist1(:)); %interpretation: you get the minimum distance  between row1 and row2 of [x core]

Veify if my understanding is correct:

You want a pixel from x which minimizes the distance dist and it should belong to four_neighbourhood_pixels. This is the matrix [x core]

 1     4     3     0     0     1
 6     4     3     1     1     0
 6     9     3     1     1     0
 2     4     3     0     1     1
 5     4     0     0     0     0
 5     3     1     1     1     1
 6     4     7     0     0     0

Suppose you get the minimum value between 2nd row and 3rd row. Now based on this tell us what you mean by "find a pixel which minimizes..."

Autonomous
  • 8,935
  • 1
  • 38
  • 77