select particular 8 *8 blocks then change the pixel values of this blocks to 0

1 vue (au cours des 30 derniers jours)
nesrine tarhouni
nesrine tarhouni le 21 Déc 2020
Commenté : Parth Dethaliya le 11 Jan 2021
I divided an image to 8*8 blocks, then I want to select particular blocks and change the pixel values of this blocks to 0, the index of blocks to select are for example v=[1,23,25,87,96].
Can anyone help me please

Réponses (1)

Parth Dethaliya
Parth Dethaliya le 22 Déc 2020
Modifié(e) : Parth Dethaliya le 24 Déc 2020
Assuming you have numbered the blocks row-wise.
You can simply crop any indexed block likw this:
Im is the main image
Block_Index = 23;
Dividing_Factor = size(Im,2)/8;
R1 = 1 + 8*(floor(Block_Index-1./Dividing_Factor));
R2 = R1 +7;
C1 = 1 + 8*(mod(Block_Index-1,Dividing_Factor));
C2 = C1 +7;
Im(R1:R2,C1:C2) = 0; % Or any value you want to give
I hope this is the solution you were finding.
  7 commentaires
nesrine tarhouni
nesrine tarhouni le 11 Jan 2021
@Image Analyst
I used lena image (512*512), please find attached the code to divide the image into 8*8 blocks. what i need is to select particular blocks and change them to 0. The index of blocks to select are for example
v=[1,23,25,87,96].
Thanks in advance for your answer.
Parth Dethaliya
Parth Dethaliya le 11 Jan 2021
Initially you were divind in 8*8 blocks so the code was written accordingly, If you need it for 16*16 blocks then definately you will have to make some changes, same code won't work.
Changes for dividing te image in NxN blocks:
Dividing_Factor = size(Im,2)/N;
R1 = 1 + (N-1)*(floor((Block_Index-1)./Dividing_Factor));
R2 = R1 +(N-1);
C1 = 1 + N*(mod(Block_Index-1,Dividing_Factor));
C2 = C1 +(N-1);

Connectez-vous pour commenter.

Catégories

En savoir plus sur Computer Vision with Simulink dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by