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
0 件のコメント
回答 (1 件)
  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 件のコメント
  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 Center および File Exchange で Computer Vision with Simulink についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


