Comments 9
Это приводит к тому, что в моем методе не нужны ни код на OpenCL или CUDA, ни шейдеры.Очень грустно. Потому что у меня под рукой только МакОСь и Линукс, а на них нет ДиректИкса.
Абсолютно то же самое можно сделать OpenGL. Кстати, изначально я и планировал использовать OpenGL, причем в его мобильной реализации. Но для проверки метода написал сначала на DirectX.
UFO just landed and posted this here
Могли бы и код привести…
Хотя бы что-нибудь вроде этого:
Хотя бы что-нибудь вроде этого:
__global__ void fill_lin_hough_array(float *ima_d,
int imW, int imH,
float min, float max,
float *Sin_d, float *Cos_d,
int Rmax, int angles, float treshold,
float *hough_d){
int xi = blockIdx.x * blockDim.x + threadIdx.x;
int yi = blockIdx.y * blockDim.y + threadIdx.y;
int i = xi + imW * yi;
float x = (float)xi;
float y = (float)yi;
int k, R;
if(xi >= imW || yi >= imH) return;
float wd = max-min; if(wd == 0.f) wd = 1.f;
float ima = (ima_d[i]-min)/wd;
if(ima > treshold){
for(k = 0; k < angles; k++){
// R = x*cos(theta) + y*sin(theta)
R = (int)(0.5f + x * Cos_d[k] + y * Sin_d[k]);
// THIS IS VERY BAD, BUT atomicAdd doesn't work in old devices
if(R > 0 && R < Rmax) hough_d[R + Rmax*k] += ima;
//if(R > 0 && R < Rmax) atomicAdd(&hough_d[R + Rmax*k], ima);
}
}
}
Sign up to leave a comment.
Рендеринг наоборот. Преобразование Хафа на GPU