图像灰度化,C#,指针法
93°2009/07/28软件综合 IP:广东


囧囧 解释语言就是慢 1280*800的bmp在T5470上用了22ms

另 运行这个要开启不安全代码
+1000  科创币    我说要有光    2009/07/28 原创开源
来自:计算机科学 / 软件综合
31
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
93° 作者
15年6个月前 IP:未同步
132808
二值化稍快。。。17ms

无标题.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132811
试了 4288x2848 的jpg(nikon d90 1230W像素原图),50ms左右。。慢慢慢
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
我说要有光
15年6个月前 IP:未同步
132815
这次93改的名靠谱             
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132818
我也觉得很靠谱 = = 破M指使我这么做的  刚好有改名卡存货 囧
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
chiataimakra
15年6个月前 IP:未同步
132820
沒辦法給你加精加分了,唉...該死的tbb................
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小俊
15年6个月前 IP:未同步
132821
看我CUDA大法:


__global__ static void greyKernel(unsigned char *in, unsigned char *out)
{
    const unsigned long offset = (blockIdx.x * THREAD_N + threadIdx.x);
    unsigned char b = in[offset * 3];
    unsigned char g = in[offset * 3 + 1];
    unsigned char r = in[offset * 3 + 2];

    unsigned char t = (unsigned char)(0.299f * r + 0.587f * g + 0.114f * b);
    
    out[offset * 3] = out[offset * 3 + 1] = out[offset * 3 + 2] = t;
}


1280×800,0.41毫秒,GT200的240个流处理器真不是吃素的。

1.jpg

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小俊
15年6个月前 IP:未同步
132823
相比在QX6600上要用14.1ms,比你的T5470+C#没快多少。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132827
自从看见了CUDA,我就彻底喷血了……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132831
当当当!!E5200 @ 3GHz+C#完胜QX6600+MFC

二值化 1280x800 bitmap 耗时 9.36ms!撒花。。。

话说C#怎么比MFC快 = = 哦 因为我用的指针……非托管代码……

无标题.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小俊
15年6个月前 IP:未同步
132833
1280×800二值化更快,CPU要5.8ms(因为没有了浮点运算),GPU只用0.27ms。

1.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132834
我操。。。发错图 。。。囧

未命名.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小俊
15年6个月前 IP:未同步
132836
引用第9楼破93于2009-07-28 17:34发表的  :
当当当!!E5200 @ 3GHz+C#完胜QX6600+MFC

二值化 1280x800 bitmap 耗时 9.36ms!撒花。。。

话说C#怎么比MFC快 = = 哦 因为我用的指针……非托管代码……
.......


我的不到6ms哦。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132837
4288x2848,灰度用了 57ms 。。很满意了 = =  因为我写的都是两位数x两位数的东西……
未命名.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132839
引用第12楼qwernet于2009-07-28 17:37发表的  :


我的不到6ms哦。。。

OMG 彻底屈服 xx的CPU+MFC 。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132842
亲爱的小俊……我要开双线程了……两个核心都用上 哇哈哈哈哈哈
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小俊
15年6个月前 IP:未同步
132843
引用第14楼破93于2009-07-28 17:42发表的  :

OMG 彻底屈服 xx的CPU+MFC 。。


我的CPU应该没有你的强哦,虽然是4核,但没有用多线程也是白搭。我的主频只有2.4GHz哦。不过我的二值化程序里面没有浮点运算。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小俊
15年6个月前 IP:未同步
132845
引用第15楼破93于2009-07-28 17:43发表的  :
亲爱的小俊……我要开双线程了……两个核心都用上 哇哈哈哈哈哈


你开双线程我就开双卡……[s:92]

两张GT200都用上,一张卡处理半张图。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132846
我用的是RGB2L来二值化 看来 。。。解释语言还是不够MFC王道 = =
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132848
引用第17楼qwernet于2009-07-28 17:45发表的  :


你开双线程我就开双卡……[s:92]

两张GT200都用上,一张卡处理半张图。。。

动手ing 。。。。VB不支持unsafe,正在封装该指针法二值化的class……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132850
我爱验证码!!挖哈哈哈哈啊和哈哈哈哈哈哈哈哈

无标题.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
chiataimakra
15年6个月前 IP:未同步
132852
93麻煩放一下二值化的代碼.我覺得算法很重要...
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132855
就是之前的RGB2L,我发了贴的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小俊
15年6个月前 IP:未同步
132857
引用第22楼破93于2009-07-28 17:53发表的  :
就是之前的RGB2L,我发了贴的                                


那个代码有些不太合理:

1、为什么计算的时候要转成double呢?
2、GetPixel的结果拆成R、G、B最好用位操作实现,不要用除法和取模,不过不排除编译器会优化掉。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小俊
15年6个月前 IP:未同步
132858
另外这个灰度化的代码也有优化的余地,例如:
temp = (byte)(0.299 * ptr[2] + 0.587 * ptr[1] + 0.114 * ptr[0]);
这样会当成double双精度来计算,结果再转换成byte,效率比较低。
优化的方法是把0.299、0.587、0.114这些系数乘以2的N次方,比如65536,再取整来作为系数,然后以整型乘法来实现计算。当然最终的结果temp被放大了65536倍,这个除回来就是了。怎么除呢?右移16位就是了。

不过在CUDA上问题就不大,因为GPU上最多的就是单精度浮点运算单元。
+200
科创币
破93
2009-07-28
thx
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年6个月前 IP:未同步
132860
呵呵 胡乱写的,太懒,直接用double了

至于位操作 。。 我很讨厌 = = 对位操作很没有好感 。。。可能是当年跟破chia学VB的习惯吧
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
warmonkey
15年5个月前 IP:未同步
140718
不喜欢位操作,到单片机上就麻烦了……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon
15年5个月前 IP:未同步
140919
引用第25楼破93于09-07-28 18:05发表的  :
呵呵 胡乱写的,太懒,直接用double了

至于位操作 。。 我很讨厌 = = 对位操作很没有好感 。。。可能是当年跟破chia学VB的习惯吧

who说八道。位操作和我的VB有关系吗
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
15年5个月前 IP:未同步
140929
引用第27楼novakon于2009-08-15 18:54发表的  :

who说八道。位操作和我的VB有关系吗

有啊,VB里几乎不用
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
acmilan
11年11个月前 IP:未同步
493438
Mat src=imread("XXXXXXg");
if(!src.data)
return -1;
Mat dst;
cvtColor(src, dst, CV_RGB2GRAY);//[s:274]
namedWindow("rgb2gray", CV_WINDOW_AUTOSIZE);
imshow("rgb2gray", dst);
waitKey();
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ldy188
11年10个月前 IP:未同步
509420
什么东西呀。越来越看不懂了。要学习了。
-2
科创币
罗布
2013-03-21
灌水- -附带挖坟政策奖励
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
93°
学者 笔友
文章
651
回复
6032
学术分
30
2007/04/10注册,6年11个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}