麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

CUDA+OpenCV 繪制朱利亞(Julia)集合圖形

2019-11-14 12:23:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Julia集中的元素都是經(jīng)過(guò)簡(jiǎn)單的迭代計(jì)算得到的,很適合用CUDA進(jìn)行加速。對(duì)一個(gè)600*600的圖像,需要進(jìn)行360000次迭代計(jì)算,所以在CUDA中創(chuàng)建了600*600個(gè)線程塊(block),每個(gè)線程塊包含1個(gè)線程,并行執(zhí)行360000次運(yùn)行,圖像的創(chuàng)建和顯示通過(guò)OpenCV實(shí)現(xiàn):

#include "cuda_runtime.h"#include <highgui.hpp>using namespace cv;#define DIM 600   //圖像長(zhǎng)寬struct cuComplex{	float   r;	float   i;	__device__ cuComplex(float a, float b) : r(a), i(b) {}	__device__ float magnitude2(void)	{		return r * r + i * i;	}	__device__ cuComplex Operator*(const cuComplex& a)	{		return cuComplex(r*a.r - i*a.i, i*a.r + r*a.i);	}	__device__ cuComplex operator+(const cuComplex& a)	{		return cuComplex(r + a.r, i + a.i);	}};__device__ int julia(int x, int y){	const float scale = 1.5;	float jx = scale * (float)(DIM / 2 - x) / (DIM / 2);	float jy = scale * (float)(DIM / 2 - y) / (DIM / 2);	cuComplex c(0.25, 0.010);	cuComplex a(jx, jy);	int i = 0;	for (i = 0; i < 200; i++)	{		a = a * a + c;		if (a.magnitude2() > 1000)			return 0;	}	return 1;}__global__ void kernel(unsigned char *ptr){	// map from blockIdx to pixel position	int x = blockIdx.x;	int y = blockIdx.y;	int offset = x + y * gridDim.x;	// now calculate the value at that position	int juliaValue = julia(x, y);	ptr[offset * 3 + 0] = 0;	ptr[offset * 3 + 1] = 0;	ptr[offset * 3 + 2] = 255 * juliaValue;}// globals needed by the update routinestruct DataBlock{	unsigned char   *dev_bitmap;};int main(void){	DataBlock   data;	cudaError_t error;	Mat image = Mat(DIM, DIM, CV_8UC3, Scalar::all(0));	data.dev_bitmap = image.data;	unsigned char    *dev_bitmap;	error = cudaMalloc((void**)&dev_bitmap, 3 * image.cols*image.rows);	data.dev_bitmap = dev_bitmap;	dim3    grid(DIM, DIM);	kernel << <grid, 1 >> > (dev_bitmap);	error = cudaMemcpy(image.data, dev_bitmap,		3 * image.cols*image.rows,		cudaMemcpyDeviceToHost);	error = cudaFree(dev_bitmap);	imshow("CUDA For Julia | c(0.25, 0.010)", image);	waitKey();}

c(-0.8,0.156):

c(-0.85,0.06):

c(-0.305,0.60):

c(0.25,0.010):


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产午夜精品一区二区三区不卡 | 国产亚洲精品久久午夜玫瑰园 | 国产精品一区二区三区在线播放 | 日本在线高清 | 日韩午夜片 | 久久精品一区视频 | 国产www免费 | 黄色高清av | 国产一级一片免费播放 | 欧美一级特黄a | 毛片免费在线播放 | 黄色大片网站在线观看 | 日韩在线欧美在线 | 精品欧美一区二区精品久久 | 精品国产一区二区亚洲人成毛片 | 羞羞视频一区二区 | 亚洲aⅴ免费在线观看 | 国产精品高潮视频 | 黄色网电影| 日本成人二区 | 久草在线资源福利站 | 亚洲国产精品一区 | 99精品国产成人一区二区 | 中文在线观看视频 | 久色成人网 | 国产精品一区二区免费在线观看 | 免费一级欧美 | 国产成人在线一区二区 | 免费国产在线观看 | 日本中文字幕久久 | 日韩免费黄色 | 一级尻逼视频 | 国产一级爱c视频 | 午夜热门福利 | 狠狠操精品视频 | 欧洲成人一区 | 国产精品久久久久久久久久东京 | 手机视频在线播放 | av成人免费在线观看 | 毛片免费视频观看 | 国产91丝袜在线播放 |