[問題] 影像處理,色彩空間轉換與修改像素

作者: 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