画像ファイルの名前をコマンドライン引数として取り、画像をグレースケールに変換し、StdDraw を使用して 256 のグレースケール強度のそれぞれの発生頻度のヒストグラムをプロットする Java クラスの作成に問題があります。
画像をグレースケールに変換する部分は完成しましたが、256 グレースケール強度の周波数をプロットするのに問題があります。これをどのように進めるか正確にはわかりません。これが私のコードです
package grayscale;
import edu.princeton.cs.introcs.Picture;
import edu.princeton.cs.introcs.StdDraw;
import java.awt.Color;
public class Grayscale {
public static void main(String[] args) {
{
Picture pic = new Picture(args[0]);
int[] freq = new int[1000];
for (int i = 0; i < pic.height(); i++) {
for (int j = 0; j < pic.width(); j++) {
Color color = pic.get(i, j);
Color gray = Luminance.toGray(color);
pic.set(i, j, gray);
Color c = pic.get(i, j);
int r = c.getRed();
int g = c.getGreen();
int b = c.getBlue();
if (r == c.getRed()) {
freq[r]++;
}
if (g == c.getGreen()) {
freq[g]++;
}
if (b == c.getBlue()) {
freq[b]++;
}
if (i % 1000 == 0) {
StdDraw.setXscale(-1, pic.width());
StdDraw.setYscale(0, pic.height());
StdDraw.setPenRadius(.5 / pic.width());
for (int k = 0; k < pic.width(); k++) {
StdDraw.line(k, 0, k, freq[k]);
}
}
}
pic.show();
}
}
}
}