キー | 画像 | 意味 | 特徴 |
---|---|---|---|
0 | グレー.jpg | 元画像をグレースケール化した画像 | |
1 | 1ラプラシアン縦横.png | 縦横方向のラプラシアンフィルタで抽出した結果を元画像と合成した画像 | エリア間のエッジ部分が白くなる |
2 | 1ラプラシアン全.png | 全方向のラプラシアンフィルタで抽出した結果を元画像と合成した画像 | 1キーの画像よりエッジ部分がさらに白くなる |
3 | 2プレヴィット合成.png | X, Y方向のプレヴィットフィルタの結果を合成した結果を元画像と合成した画像 | 2キーの画像よりエッジ部分がさらに白くなる エリア内部のザラザラは少なくなる |
4 | 2ソーベル合成.png | X, Y方向のソーベルフィルタの結果を合成した結果を元画像と合成した画像 | 3キーの画像よりエッジ部分がさらに白くなる |
5 | 3アンシャープ.png | 移動平均フィルタによる平滑化の逆の処理を加えた画像 | 0キーの画像のエッジをくっきりさせた画像になる |
0 | 1 | 0 |
1 | -4 | 1 |
0 | 1 | 0 |
0 | -1 | 0 |
-1 | 4 | -1 |
0 | -1 | 0 |
0 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
0 | -1 | 0 |
-1 | 5 | -1 |
0 | -1 | 0 |
1 | 1 | 1 |
1 | -8 | 1 |
1 | 1 | 1 |
-1 | -1 | -1 |
-1 | 9 | -1 |
-1 | -1 | -1 |
// 画像用の変数 PImage[] img = new PImage[9]; // 出力ファイル名 String[] fName = {"元", "1プレヴィットX", "1プレヴィットY", "1ソーベルX", "1ソーベルY", "2ラプラシアン縦横", "2ラプラシアン全", "3プレヴィット合成", "3ソーベル合成"};
// 画像用の変数 PImage[] img = new PImage[6]; // 出力ファイル名 String[] fName = {"グレー", "1ラプラシアン縦横", "1ラプラシアン全", "2プレヴィット合成", "2ソーベル合成", "3アンシャープ"};
single(mask_prewittX, 1); // プレヴィットフィルタ(X)でエッジ抽出した画像をimg[1]に保存 single(mask_prewittY, 2); // プレヴィットフィルタ(Y)でエッジ抽出した画像をimg[2]に保存 single(mask_sobelX, 3); // ソーベルフィルタ(X)でエッジ抽出した画像をimg[3]に保存 single(mask_sobelY, 4); // ソーベルフィルタ(Y)でエッジ抽出した画像をimg[4]に保存 single(mask_laplacian4, 5); // ラプラシアンフィルタ(横・縦)でエッジ抽出した画像をimg[5]に保存 single(mask_laplacian8, 6); // ラプラシアンフィルタ(全方向)でエッジ抽出した画像をimg[6]に保存 compose(mask_prewittX, mask_prewittY, 7); // 縦横のプレヴィットフィルタの結果を合成した画像をimg[7]に保存 compose(mask_sobelX, mask_sobelY, 8); // 縦横のソーベルフィルタの結果を合成した画像をimg[8]に保存
single(mask_laplacian4, 1);// ラプラシアンフィルタ(横・縦)でエッジ抽出して元画像に合成した画像をimg[1]に保存 single(mask_laplacian8, 2);// ラプラシアンフィルタ(全方向)でエッジ抽出して元画像に合成した画像をimg[2]に保存
img[0].save("data/"+ fName[0] +".jpg");
// 1種類のフィルタでエッジ抽出した結果を元画像に合成する(課題1)
// 画像n, 画像mの明度を加えたものを画像nに保存し、n番目の名前でファイル保存 void superimpose(int n, int m) { for (int j=0; j<h; j++) { for (int i=0; i<w; i++) { float brn = brightness(img[n].pixels[i+w*j]); float brm = brightness(img[m].pixels[i+w*j]); img[n].pixels[i+w*j] = color(brn+brm); } } img[n].save("data/"+ fName[n] +".png"); }
img[n].save("data/"+ fName[n] +".png");
superimpose(n, 0);
img[n].save("data/"+ fName[n] +".png");
superimpose(n, 0);
single(mask_laplacian4, 1);// ラプラシアンフィルタ(横・縦)でエッジ抽出して元画像に合成した画像をimg[1]に保存 single(mask_laplacian8, 2);// ラプラシアンフィルタ(全方向)でエッジ抽出して元画像に合成した画像をimg[2]に保存
// X, Y方向のプレヴィットフィルタの計算結果を合成したものを元画像に合成した画像をimg[3]に保存 // X, Y方向のソーベルフィルタの計算結果を合成したものを元画像に合成した画像をimg[4]に保存
1/9 | 1/9 | 1/9 |
1/9 | 1/9 | 1/9 |
1/9 | 1/9 | 1/9 |
0 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
-1/9 | -1/9 | -1/9 |
-1/9 | 17/9 | -1/9 |
-1/9 | -1/9 | -1/9 |
img[n].pixels[i+w*j] = color(brn+brm);
img[n].pixels[i+w*j] = color(brm*2-brn);
img[n].save("data/"+ fName[n] +".png");
subtract(n, 0);
single(mask_laplacian4, 1);// ラプラシアンフィルタ(横・縦)でエッジ抽出して元画像に合成した画像をimg[1]に保存 single(mask_laplacian8, 2);// ラプラシアンフィルタ(全方向)でエッジ抽出して元画像に合成した画像をimg[2]に保存 compose(mask_prewittX, mask_prewittY, 3); // X, Y方向のプレヴィットフィルタの計算結果を合成したものを元画像に合成した画像をimg[3]に保存 compose(mask_sobelX, mask_sobelY, 4); // X, Y方向のソーベルフィルタの計算結果を合成したものを元画像に合成した画像をimg[4]に保存
// アンシャープマスク処理をかけた画像をimg[5]に保存