画素のアクセスメモ ( 幅高さの中点メモ )

縮小コード書く時 for で回すのだが、条件がおかしくてよくエラーになるので。

※動かしていない。

 

中点

画像の幅 10

半分にすると長さは 5 。
この画像の中心の画素は int 値で取得できない。

f:id:koshinRan:20180612005028p:plain

取得しようとすると、 4.5 となる。

 

画像の幅 11の場合

半分にすると長さは 5.5 。
この画像の真ん中は 5 。

f:id:koshinRan:20180612005107p:plain

 

縮小などにおける画素アクセス

ex ) 画像を 4 * 4 ( 4px -> 1px ) に縮小する ( 間引き )

画像幅 40 の場合

f:id:koshinRan:20180612005322p:plain

40 / 4 = 10

    for( 略 )
    {
        // 条件は 4 * 10 未満
        for( int x = 0; x < 40; x+=4 )
        {
           
        }
    }

 

画像幅 30 の場合

f:id:koshinRan:20180612005441p:plain

30 / 4 = 7.5

    for( 略 )
    {
        // 条件は 4 * 7 未満
        for( int x = 0; x < 28; x+=4 )
        {
           
        }
    }

 

 

条件の考え方メモ

以下でも同様の結果となる。

for( int x = 0; x < 25; x+=4 )  // ex)  幅 30

最初にアクセスする画素は 0 。順次、アクセスする画素は 4, 8 …
0 * 7 は 0なので、 4 * 6。
4 * 6 = 24  が、 4 px 分取得できる最後のインデックス。

24 は 条件 true として処理したいので、 + 1。
4 * 6 + 1 = 25

 

4 px 分取得する頭のインデックスに着目した式。
尾 に着目すると 4 * 7 の式。

 

 

以上。