Commit 5343a315a83fba1ddc129f4fa8345bd5945c82cf

Authored by Tianshu Cheng
1 parent aa1bc80d

make changes to image_contour_detection.h

stim/cuda/array_add.cuh
@@ -28,7 +28,7 @@ namespace stim{ @@ -28,7 +28,7 @@ namespace stim{
28 int threads = stim::maxThreadsPerBlock(); 28 int threads = stim::maxThreadsPerBlock();
29 29
30 //calculate the number of blocks 30 //calculate the number of blocks
31 - int blocks = N / threads + (N%threads == 0 ? 0:1); 31 + int blocks = N / threads + 1;
32 32
33 //call the kernel to do the multiplication 33 //call the kernel to do the multiplication
34 cuda_add <<< blocks, threads >>>(ptr1, ptr2, sum, N); 34 cuda_add <<< blocks, threads >>>(ptr1, ptr2, sum, N);
stim/cuda/conv2.cuh
@@ -13,7 +13,7 @@ namespace stim{ @@ -13,7 +13,7 @@ namespace stim{
13 13
14 template<typename T> 14 template<typename T>
15 //__global__ void cuda_conv2(T* img, T* mask, T* copy, cudaTextureObject_t texObj, unsigned int w, unsigned int h, unsigned M){ 15 //__global__ void cuda_conv2(T* img, T* mask, T* copy, cudaTextureObject_t texObj, unsigned int w, unsigned int h, unsigned M){
16 - __global__ void cuda_conv2(T* img, T* mask, T* copy, cudaTextureObject_t texObj, unsigned int w, unsigned int h, unsigned M){ 16 + __global__ void cuda_conv2(T* img, T* mask, T* copy, cudaTextureObject_t texObj, unsigned int w, unsigned int h, unsigned int M){
17 17
18 18
19 //the radius of mask 19 //the radius of mask
@@ -35,7 +35,7 @@ namespace stim{ @@ -35,7 +35,7 @@ namespace stim{
35 //copy[idx] = tex2D<float>(texObj, i+100, j+100); 35 //copy[idx] = tex2D<float>(texObj, i+100, j+100);
36 //return; 36 //return;
37 37
38 - //tex2D<float>(texObj, i, j); 38 + tex2D<float>(texObj, (float)i/w, (float)j/h);
39 39
40 //allocate memory for result 40 //allocate memory for result
41 T sum = 0; 41 T sum = 0;
@@ -54,7 +54,7 @@ namespace stim{ @@ -54,7 +54,7 @@ namespace stim{
54 54
55 //T temp = img[y * w + x] * mask[yy * M + xx]; 55 //T temp = img[y * w + x] * mask[yy * M + xx];
56 //sum += img[y * w + x] * mask[yy * M + xx]; 56 //sum += img[y * w + x] * mask[yy * M + xx];
57 - sum += tex2D<T>(texObj, x, y) * 1.0;//mask[yy * M + xx]; 57 + sum += tex2D<T>(texObj, (float)x/w, (float)y/h) * mask[yy * M + xx];
58 } 58 }
59 } 59 }
60 copy[idx] = sum; 60 copy[idx] = sum;
@@ -89,11 +89,11 @@ namespace stim{ @@ -89,11 +89,11 @@ namespace stim{
89 // Specify texture object parameters 89 // Specify texture object parameters
90 struct cudaTextureDesc texDesc; //create a texture descriptor 90 struct cudaTextureDesc texDesc; //create a texture descriptor
91 memset(&texDesc, 0, sizeof(texDesc)); //set all values in the texture descriptor to zero 91 memset(&texDesc, 0, sizeof(texDesc)); //set all values in the texture descriptor to zero
92 - texDesc.addressMode[0] = cudaAddressModeMirror; //use wrapping (around the edges)  
93 - texDesc.addressMode[1] = cudaAddressModeMirror; 92 + texDesc.addressMode[0] = cudaAddressModeClamp; //use wrapping (around the edges)
  93 + texDesc.addressMode[1] = cudaAddressModeClamp;
94 texDesc.filterMode = cudaFilterModePoint; //use linear filtering 94 texDesc.filterMode = cudaFilterModePoint; //use linear filtering
95 texDesc.readMode = cudaReadModeElementType; //reads data based on the element type (32-bit floats) 95 texDesc.readMode = cudaReadModeElementType; //reads data based on the element type (32-bit floats)
96 - texDesc.normalizedCoords = 0; //not using normalized coordinates 96 + texDesc.normalizedCoords = 1; //using normalized coordinates
97 97
98 // Create texture object 98 // Create texture object
99 cudaTextureObject_t texObj = 0; 99 cudaTextureObject_t texObj = 0;
stim/image/image_contour_detection.h
1 -//#include <stim/image/image.h>  
2 -//#include <cmath>  
3 -//#include <stim/visualization/colormap.h>  
4 1
5 -stim::image<float> gaussian_derivative_filter_odd(stim::image<float> image, float sigma, unsigned int sigma_n, unsigned int winsize, float theta, unsigned int w, unsigned int h);  
6 -stim::image<float> func_mPb_theta(stim::image<float> lab, float theta, unsigned int w, unsigned int h);  
7 -stim::image<float> func_mPb(stim::image<float> lab, unsigned int theta_n, unsigned int w, unsigned int h);  
8 \ No newline at end of file 2 \ No newline at end of file
  3 +stim::image<float> gaussian_derivative_filter_odd(stim::image<float> image, int r, unsigned int sigma_n, float theta);
  4 +stim::image<float> func_mPb_theta(stim::image<float> img, float theta, int* r, float* alpha, int s);
  5 +stim::image<float> func_mPb(stim::image<float> img, unsigned int theta_n, int* r, float* alpha, int s);
9 \ No newline at end of file 6 \ No newline at end of file