Saya membuat peta ketinggian untuk setiap quad di quadtree saya di openCL. Cara saya membuat gambar adalah sebagai berikut:
DataBufferInt dataBuffer =
(DataBufferInt)img.getRaster().getDataBuffer();
int data[] = dataBuffer.getData();
//img is a bufferedimage
inputImageMem = CL.clCreateImage2D(
context, CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR,
new cl_image_format[]{imageFormat}, size, size,
size * Sizeof.cl_uint, Pointer.to(data), null);
Ini berfungsi dengan baik tetapi masalah utamanya adalah ketika paha depan semakin kecil dan lebih kecil, format 8-bit dari gambar buffered mulai menyebabkan masalah "melangkah" yang tak tertahankan seperti yang terlihat di bawah ini:
Saya bertanya-tanya apakah ada cara alternatif saya bisa melakukan ini?
Terima kasih untuk waktunya.
Jawaban:
Apakah Anda menggunakan pemfilteran tekstur saat membaca peta ketinggian? Saya berharap bahwa filter bilinear akan memuluskan sedikit.
Jika Anda masih membutuhkan ketelitian yang lebih baik maka ubah format gambar menjadi sesuatu seperti CL_UNORM_INT16 atau CL_FLOAT - lihat http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/cl_image_format.html
Saya tidak begitu yakin bagaimana Anda melakukannya dari Jawa.
sumber
cl_image_format
memilikiimage_channel_data_type
anggota yang dapat digunakan untuk menentukan format data (mis.CL_FLOAT
dll . )