[问题] 影像处理,色彩空间转换与修改像素

楼主: z115988 (Lee)   2017-01-25 17:43:33
1/27修改文章以利于阅读、更新问题
新手发问
刚接触C# & EMGUCV 影像处理
想试图针对一些简单影像操作
目的:
目前想针对输入影像RGB
透过函式转换成其他色彩空间
例如修改Lab的L通道
实作时遇到问题:
为了增加程式对图片像素运作的速度
其中一中方式是将资料放进内存运算如网址:
https://msdn.microsoft.com/zh-tw/library/5ey6h79d(v=vs.110).aspx
可使用此方式
透过上列网址的范例程式
把整张影像,转成Bitmap
透过内存方式想修改色彩空间中的通道值,如下
rgbvalues[i] = 80;
事实上我并没有修改范例程式
感觉是在范例程式某个环节 或 修改像素时哪里出错了
新手使用C#影像处理
不知道写法是否与大多数人相同
还请各位先进帮忙解惑
楼主: z115988 (Lee)   2017-01-25 17:44:00
另外想请问,bitmap格式是默认RGB的PIXEL吗? 小弟有点摸不著头绪
作者: capercat (Qoo)   2017-01-27 00:45:00
不是很懂你想问的问题....感觉你需要rgb to Lab 后 改变L值之后..再将新的Lab to rgb 在放回bitmap里面!...改变L只是让她变亮而已...Msdn写的rgbvalue[]是一个一维矩阵..排列顺序为BGR...范例是修改R值...你可能要先转换成Lab..才能做后续的处理
楼主: z115988 (Lee)   2017-01-27 01:20:00
c大你好,您说的正确,借由Lab修改亮度也是我的目的。冗长的描述是我担心表达不正确。我处理时已将RGB转成LAB丢进范例处理,而在Lab丢进内存修改时遇到问题:Lab值在rgbvalue[]中并不相同。其中我认为我在设定lockbit时,其中参数PixelFormat为Format24bppRgb是错的,但我目前不知道要用什么格式去取代。我有在微软论坛发一篇文章,或许从里面您更能了解我的问题(内含我写程式的流程)网址已经更新在内文,不好意思PTT不给我贴缩网址,连结时可能需要注意一下
作者: Litfal (Litfal)   2017-01-27 01:55:00
为什么你不重头到尾使用EmguCV,而要途中改回GDI的Bitmap?直接修改 red_lab_img2 的L通道不是很简单吗?而且为什么你的TDepth要用Single...?
楼主: z115988 (Lee)   2017-01-27 03:07:00
L大您好,目前在练习C#与EMGUCV,程式技巧略绌还请见谅,TDepth是下午在思考bug时测试,未注意到修改。想请问一下,您指出原来Emgucv有直接修改颜色通道函式,可否指点一下函式名称?(注:当初想使用此方式是因为未来可能对影片作处理,得知使用内存处理影像似乎速度比较快(?))
作者: Litfal (Litfal)   2017-01-27 10:07:00
MIplImage

Links booklink

Contact Us: admin [ a t ] ucptt.com