Advertisement
Guest User

Untitled

a guest
Apr 16th, 2014
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. #define _USE_MATH_DEFINES
  2.  
  3. #include "cuda_runtime.h"
  4. #include "device_launch_parameters.h"
  5.  
  6. #include <math.h>
  7.  
  8. __global__ void radialAverage(double** image, int x_center, int y_center)
  9. {
  10. int i, x, y;
  11.  
  12. const int x_size = 400;
  13. const int y_size = 400;
  14.  
  15. int thread = blockIdx.x*blockDim.x+threadIdx.x;
  16.  
  17. double angle = 0;
  18. double dAngle = M_PI/360;
  19.  
  20. double radImgMat[x_size][y_size];
  21. double angleMatPi[x_size][y_size];
  22.  
  23.  
  24. //radImMap erstellen
  25. for( x = 0; x < x_size; x++) {
  26. for( y = 0; y < y_size; y++) {
  27. radImgMat[x][y] = sqrt((double)(x+1-x_center)*(x+1-x_center) + (y+1-y_center)*(y+1-y_center));
  28. }
  29. }
  30.  
  31. //Angle-Matrix (pi-pi) erstellen
  32. for ( x = 0; x < x_size; x++) {
  33. for( y = 0; y < y_size; y++) {
  34. float xD = x+1-x_center;
  35. float yD = y+1-y_center;
  36. if(yD>0) {
  37. angleMatPi[x][y] = -1*(atan(xD/yD)+M_PI/2)+M_PI;
  38. } else if(yD==0 && xD<0) {
  39. angleMatPi[x][y] = M_PI;
  40. } else if(yD==0 && xD>0) {
  41. angleMatPi[x][y] = 0;
  42. } else {
  43. angleMatPi[x][y] = -1*(atan(xD/yD)+M_PI/2);
  44. }
  45. }
  46. }
  47.  
  48. //Cut ImgMat
  49. for(x=0; x < x_size; x++) {
  50. for(y = 0; y < y_size; y++) {
  51. if((angleMatPi[x][y] < (angle-dAngle)) || (angleMatPi[x][y] > (angle+dAngle))) {
  52. image[x][y] = 0;
  53. }
  54. }
  55. }
  56. }
  57.  
  58. int *d_image;
  59. cudaMalloc((void**)&d_image,x_size*y_size*sizeof(int)); //allocate memory on the GPU for the image
  60.  
  61. cudaMemcpy(d_image,image,x_size*y_size*sizeof(int),cudaMemcpyHostToDevice); //copy the image to GPU global memory
  62.  
  63. radialAverage<<<numBlocks,numThreads>>>(d_image,x_size,y_size,x_center,y_center); //Call CUDA kernel with device pointer to image data
  64.  
  65. image[y*x_size + x];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement