我想解決一個問題,我應該將彩色圖像更改爲灰度圖像。爲此,我使用CUDA並行方法。
我在GPU上調用的kerne代碼如下。彩色圖像使用CUDA並行處理灰度圖像
__global__
void rgba_to_greyscale(const uchar4* const rgbaImage,
unsigned char* const greyImage,
int numRows, int numCols)
{
int absolute_image_position_x = blockIdx.x;
int absolute_image_position_y = blockIdx.y;
if (absolute_image_position_x >= numCols ||
absolute_image_position_y >= numRows)
{
return;
}
uchar4 rgba = rgbaImage[absolute_image_position_x + absolute_image_position_y];
float channelSum = .299f * rgba.x + .587f * rgba.y + .114f * rgba.z;
greyImage[absolute_image_position_x + absolute_image_position_y] = channelSum;
}
void your_rgba_to_greyscale(const uchar4 * const h_rgbaImage,
uchar4 * const d_rgbaImage,
unsigned char* const d_greyImage,
size_t numRows,
size_t numCols)
{
//You must fill in the correct sizes for the blockSize and gridSize
//currently only one block with one thread is being launched
const dim3 blockSize(numCols/32, numCols/32 , 1); //TODO
const dim3 gridSize(numRows/12, numRows/12 , 1); //TODO
rgba_to_greyscale<<<gridSize, blockSize>>>(d_rgbaImage,
d_greyImage,
numRows,
numCols);
cudaDeviceSynchronize(); checkCudaErrors(cudaGetLastError());
}
我看到第一個像素行中的點線。
錯誤我得到是
libdc1394錯誤:無法在POS 51初始化libdc1394
差超過公差5
參考:255
GPU:0
my input/output images 誰能幫我這個???提前致謝。
請給你的問題一個更有意義的標題。就目前而言,除了你之外,對任何人都絕對沒有意義。具有類似圖像處理問題的人如何通過搜索找到這個問題? – talonmies
@talonmies:希望標題現在有意義。 –
這是來自Udacity的「並行編程入門」課程的任務。你應該自己解決,而不是使用stackowerflow來解決你的問題。 – RoBiK