i=0; for(y=1;y<101;y++) { setPixel(101, y, Intensity[(100*i)+99]); i++; }
領域③
【領域④】
領域④はy座標は101のままでx座標を1ピクセルずつ増やして座標を読み取り、配列に代入したもとの画像の輝度値を代入していけばよいことになります。
配列をIntensity[i]とすると、画像の輝度値は次のように考えられます。
i=0; for(x=0;x<101;x++) { setPixel(x, 101, Intensity[(9900+i]); i++; }
領域④
【四隅について】
上記では除外した四隅
(0,0), (0, 101), (101, 0), (101, 101)については次のようになります。
(0,0)の輝度値←Intensity[0]の輝度値
(0, 101)の輝度値←Intensity[9900]の輝度値
(101, 0)の輝度値←Intensity[99]の輝度値
(100,101)の輝度値←Intensity[9999]の輝度値
(0,0), (0, 101), (101, 0), (101, 101)については次のようになります。
(0,0)の輝度値←Intensity[0]の輝度値
(0, 101)の輝度値←Intensity[9900]の輝度値
(101, 0)の輝度値←Intensity[99]の輝度値
(100,101)の輝度値←Intensity[9999]の輝度値
◆スクリプト
height=getHeight(); //縦のピクセル数を抽出 画像の幅と高さ width=getWidth(); //横のピクセル数を抽出 Intensity=newArray(height*width);//height, widthともに100 i=0; run("32-bit"); //まずもとの画像から輝度値を抽出し配列Intensityに代入する。 for(y=0;y<height;y++) { for(x=0;x<width;x++) { Intensity[i]=getPixel(x,y); i++; } } run("Canvas Size...", "width=101 height=100 position=Top-Right zero"); run("Canvas Size...", "width=102 height=100 position=Top-Left zero"); run("Canvas Size...", "width=102 height=101 position=Bottom-Center zero"); run("Canvas Size...", "width=102 height=102 position=Bottom-Right zero"); //102×102の画像を作成 i=0; //領域① for(y=1;y<101;y++) { setPixel(0,y,Intensity[100*i]); i++; } i=0;//領域② for(x=1;x<101;x++) { setPixel(x,0,Intensity[i]); i++; } i=0;//領域③ for(y=1;y<101;y++) { setPixel(101, y, Intensity[(100*i)+99]); i++; } i=0;//領域④ for(x=0;x<101;x++) { setPixel(x, 101, Intensity[(9900+i]); i++; } //四隅の輝度値 setPixel(0,0,Intensity[0]); setPixel(0,101,Intensity[9900]); setPixel(101,0,Intensity[99]); setPixel(101,101,Intensity[9999]); N=3;//カーネルの大きさ intensity=0; run("32-bit"); for(y=1;y<101;y++){ for(x=1; x<101;x++){ intensity=(getPixel(x-1,y-1) +getPixel(x,y-1) +getPixel(x+1,y) +getPixel(x-1,y) +getPixel(x,y) +getPixel(x+1,y) +getPixel(x+1,y+1) +getPixel(x, y+1) +getPixel(x+1, y+1)) /(N*N); setPixel (x,y, intensity); } }
ノイズ軽減のスクリプト