padding_2d.cl 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. __kernel void padding_2d_init_const(
  2. __global float * out_img,
  3. const unsigned int nxs,
  4. const float pval)
  5. {
  6. const int idx = get_global_id(0);
  7. const int idy = get_global_id(1);
  8. const int lidx = idy * nxs + idx;
  9. out_img[lidx] = pval;
  10. }
  11. __kernel void padding_2d_copy_in(
  12. __global float * inp_img,
  13. __global float * out_img,
  14. const unsigned int sxs,
  15. const unsigned int lxs,
  16. const unsigned int xl,
  17. const unsigned int yt)
  18. {
  19. const int idx = get_global_id(0);
  20. const int idy = get_global_id(1);
  21. const int lidx = (idy + yt) * lxs + (idx + xl);
  22. const int sidx = idy * sxs + idx;
  23. out_img[lidx] = inp_img[sidx];
  24. }
  25. __kernel void padding_2d_brep(
  26. __global float * inp_img,
  27. __global float * out_img,
  28. const unsigned int sxs,
  29. const unsigned int syz,
  30. const unsigned int lxs,
  31. const unsigned int xl,
  32. const unsigned int yt)
  33. {
  34. const int idx = get_global_id(0);
  35. const int idy = get_global_id(1);
  36. const int lidx = idy * lxs + idx;
  37. const int sidx = (idy - yt) * sxs + (idx - xl);
  38. if( idy < yt)
  39. {
  40. if(idx < xl)
  41. out_img[lidx] = inp_img[0]; // top left
  42. else if(idx >= (xl+sxs))
  43. out_img[lidx] = inp_img[sxs-1]; // top right
  44. else
  45. out_img[lidx] = inp_img[idx-xl]; // top center
  46. return;
  47. }
  48. if( idy >= (yt + syz))
  49. {
  50. if(idx < xl)
  51. out_img[lidx] = inp_img[(syz-1)*sxs]; // bottom left
  52. else if(idx >= (xl+sxs))
  53. out_img[lidx] = inp_img[syz*sxs-1]; // bottom right
  54. else
  55. out_img[lidx] = inp_img[(syz-1)*sxs +(idx-xl)]; // bottom center
  56. return;
  57. }
  58. if(idx < xl)
  59. {
  60. out_img[lidx] = inp_img[(idy-yt)*sxs]; // center left
  61. return;
  62. }
  63. if(idx >= (xl+sxs))
  64. {
  65. out_img[lidx] = inp_img[(idy-yt)*sxs + (sxs -1)]; // center right
  66. return;
  67. }
  68. out_img[lidx] = inp_img[sidx]; // center center
  69. }