comparing pixels in 3x3 block
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Elysi Cochin
il 2 Gen 2020
Modificato: Hyeokjin Jho
il 3 Gen 2020
Having a matrix as shown below
![Untitled.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/257902/Untitled.png)
i wanted to take 3x3 pixel
![Untitled2.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/257903/Untitled2.png)
and compare the 3 pixels (highlighted in yellow colour) with the pixel (highlighted in green colour),
and if 2 or more pixel (highlighted in yellow) has value greater than the pixel (highlighted in green) and i wanted to assign 1 to it else 0
So in this case i will get 0-1-1-0 and then convert the binary 0110 to its corresponding decimal value = 6
Then the next 3x3 pixel
1 Commento
Walter Roberson
il 2 Gen 2020
Why 0110? Left edge of the left block, then top edge of the right block, then middle row of the right block, then middle column of the left block??
Risposta accettata
Hyeokjin Jho
il 3 Gen 2020
Modificato: Hyeokjin Jho
il 3 Gen 2020
Assuming your matrix is A
% collect green pixels
query_right = A(2:end-1,3:end);
query_left = A(2:end-1,1:end-2);
query_down = A(3:end,2:end-1);
query_up = A(1:end-2,2:end-1);
% collect yellow pixels
test_column = zeros(size(A,1)-2,size(A,2)-2,3);
for j = 2:size(A,2)-1
test_column(:,j-1,1:3) = toeplitz(A(3:end,j),A(3:-1:1,j));
end
test_row = zeros(size(A,1)-2,size(A,2)-2,3);
for i = 2:size(A,1)-1
test_row(i-1,:,1:3) = toeplitz(A(i,3:end),A(i,3:-1:1));
end
% evaluate
eval_right = sum(test_column>query_right,3)>=2;
eval_left = sum(test_column>query_left,3) >=2;
eval_down = sum(test_row>query_down,3) >=2;
eval_up = sum(test_row>query_up,3) >=2;
result = eval_right*2^3 + eval_down*2^2 + eval_left*2^1 + eval_up*2^0;
For matrix given in your example, the result would be
6 7 10
2 2 10
5 5 13
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Computer Vision with Simulink in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!