Effacer les filtres
Effacer les filtres

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

2 vues (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.

Community Treasure Hunt

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

Start Hunting!

Translated by