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

조회 수: 3 (최근 30일)
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

답변 (1개)

Parth Dethaliya
Parth Dethaliya 2020년 12월 22일
편집: Parth Dethaliya 2020년 12월 24일
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
nesrine tarhouni
nesrine tarhouni 2021년 1월 11일
@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 2021년 1월 11일
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);

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Computer Vision with Simulink에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by