配列ベースの強度行列とJavaのレンダリング可能な画像との間で変換する簡単な方法はありません。少なくとも私が知っているものではありません。また、画面に画像を表示するための単純な1行の方法もありません。
この場合、BufferedImageは実行可能な解決策になります。あなたがしなければならないのは、目的のサイズのBufferedImageを作成し、次に2D強度マトリックスをループし、結果の画像の色を塗りつぶすことです。
データをBufferedImageの形式にしたら、それをレンダリングに直接使用できます。たとえば、イメージを表示するためのカスタムJPanelコンポーネントを使用してJFrameを作成できます。次のサンプルコードは、この手順を示しています:(2D配列内の画像データが区間[0,1]に収まるようにスケーリングされていることを前提としていますが、そうでない場合、塗りつぶす前に再スケーリングする必要がありますBufferedImageのである。)は、上記の例が示すように、サイズ変更した後、あなたは、単にグラフィックスコンテキストをスケーリングし、その上にヒントをレンダリング補間を可能にすることによって、それを達成することができ、得られた出力画像に補間に満足している場合
public class ImageTest {
private static final int HEIGHT = 250;
private static final int WIDTH = 250;
public static void main(String[] args) {
double[][] data = new double[WIDTH][HEIGHT];
Random r = new Random();
for(int i = 0; i < WIDTH; i++) {
for(int j = 0; j < HEIGHT; j++) {
data[i][j] = r.nextDouble();
}
}
final BufferedImage img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D)img.getGraphics();
for(int i = 0; i < WIDTH; i++) {
for(int j = 0; j < HEIGHT; j++) {
float c = (float) data[i][j];
g.setColor(new Color(c, c, c));
g.fillRect(i, j, 1, 1);
data[i][j] = r.nextDouble();
}
}
JFrame frame = new JFrame("Image test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
g2d.clearRect(0, 0, getWidth(), getHeight());
g2d.setRenderingHint(
RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
// Or _BICUBIC
g2d.scale(2, 2);
g2d.drawImage(img, 0, 0, this);
}
};
panel.setPreferredSize(new Dimension(WIDTH*2, HEIGHT*2));
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
画像を表示/レンダリングするときに使用します。 (これはもちろん、BufferedImageで同様の方法で直接行うことができます。
をより明確化し、いくつかのコードを投稿 –
ここで私は、Javaにそれを変更したいMATLABコードです:。。 A = importdataは( 'D:\image_arr = 0(9 * 2 * 32,6 * 4); %img_arr = 0(576,24); arr_index = 1; (モジュール= 0:32-1)は(xtal_row = 0:6-1)のため :(2-1 block_col = 0)ため (4-1 block_row = 0)ため \t(xtal_col =用0:9-1) \t \t x = 2 * 9 * module + 9 * block_col + xtal_col + 1; \t y = 6 * block_row + xtal_row + 1; \t img_arr(x、y)= b(arr_index); \t arr_index = arr_index + 1; end end end end end – user1016048
minlocal = min(min(img_arr)); maxlocal = max(max(img_arr)); img_arr2 =(img_arr-minlocal)/(maxlocal-minlocal); img_arr4 = imresize(img_arr2、[2 * 576,2 * 24]); imshow(img_arr4 ') – user1016048