線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2470
推到 Plurk!
推到 Facebook!

二值化影像的切割問題

答題得分者是:RaynorPao
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-02 15:58:08 IP:218.162.xxx.xxx 未訂閱
有一個物體在二值化的影像中 ex. 000000000000 000000000000 000011110000 000011110000 000000000000 在上面的10X5 的影像中..要怎麼把1111 1111 這個影像切出來.... 切成剛好4X2 的影像..並另存成一張4X2的圖片呢?
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-02 20:01:12 IP:61.221.xxx.xxx 未訂閱
引言: 有一個物體在二值化的影像中 ex. 000000000000 000000000000 000011110000 000011110000 000000000000 在上面的10X5 的影像中..要怎麼把1111 1111 這個影像切出來.... 切成剛好4X2 的影像..並另存成一張4X2的圖片呢?
arnotsay 你好: 請參考以下的連結文章
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-02 20:19:52 IP:218.162.xxx.xxx 未訂閱
引言: arnotsay 你好: 請參考以下的連結文章 >< face="Verdana, Arial, Helvetica"> 你好...那一篇我有看過.. 不過有看沒有懂...想不出要如何找邊緣...
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-02 21:08:44 IP:61.221.xxx.xxx 未訂閱
引言: 你好...那一篇我有看過.. 不過有看沒有懂...想不出要如何找邊緣...
arnotsay 你好:
我把大概的做法(演算法)告訴你,程式碼就留給你自己寫了
(>
備註:
建議你自己要根據以上的關鍵字查詢  >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-03 11:46:07 IP:218.162.xxx.xxx 未訂閱
引言: 你好...那一篇我有看過.. 不過有看沒有懂...想不出要如何找邊緣...
你好....那如果要切割的影像是多邊型或是不規則型...那怎麼辦??
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-03 11:53:24 IP:203.73.xxx.xxx 未訂閱
引言: 你好....那如果要切割的影像是多邊型或是不規則型...那怎麼辦??
arnotsay 你好: 那是一樣的~~不管是不是長方形,到最後取出來的一定是長方形吧 你的演算法應該是先
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-07 13:04:17 IP:218.162.xxx.xxx 未訂閱
引言: arnotsay 你好: 那是一樣的~~不管是不是長方形,到最後取出來的一定是長方形吧 你的演算法應該是先 >< face="Verdana, Arial, Helvetica"> 我還是寫不出來...我發現比對像素很容易寫.. 但是抓到不同點的時候...我使用一個二維陣列將座標儲存... 但是儲存座標...我用了一堆for 迴圈..最後亂七八遭...根本不能儲存... 不知你有好方法嗎?
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-07 13:28:37 IP:203.73.xxx.xxx 未訂閱
引言: 我還是寫不出來...我發現比對像素很容易寫.. 但是抓到不同點的時候...我使用一個二維陣列將座標儲存... 但是儲存座標...我用了一堆for 迴圈..最後亂七八遭...根本不能儲存... 不知你有好方法嗎?
arnotsay 你好:
(1)不見得要儲存所有的座標,你可以在搜尋比對 pixel 值是否為 1 的時候,
   就同時做 sort 的動作
(2)你的程式碼呢?? 為何不把你的程式碼貼上來呢??
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-07 18:20:07 IP:218.162.xxx.xxx 未訂閱
引言: (2)你的程式碼呢?? 為何不把你的程式碼貼上來呢??
對我來說太難了..所以我一步一步來...我現在是判斷如果是白色.. 就把它改成藍色... 但是我想把整個物體的外圍改成藍色就好..不要連物體裡面都變藍色.. 該怎麼寫呢? Graphics::TBitmap *pBitmap=new Graphics::TBitmap; int Width,Height,x,y; Byte *ptr1; pBitmap= Image1->Picture->Bitmap; Image1->Picture->Bitmap->PixelFormat=(TPixelFormat)6; for ( y = 0; y < pBitmap->Height; y ) { ptr1 = (Byte *)pBitmap->ScanLine[y]; for ( x = 0; x < pBitmap->Width; x ) { if (ptr1[x*3]==255){ Image1->Canvas->Pixels[x][y]=clBlue; } } }
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-07 18:56:48 IP:140.135.xxx.xxx 未訂閱
arnotsay您好:  
引言:我想把整個物體的外圍改成藍色就好..不要連物體裡面都變藍色.. 該怎麼寫呢?
建議您可以看看數位影像處理方面的書籍,就可以知道偵測物件的edge的原理 大致上的原理是這樣的: 一張影像當中,像素劇烈變化的部分(即邊緣部分)為高頻訊號.. 利用一階微分便可偵測到,且利用遮罩便可達到一階微分的效果(ex.Sobel) 順心 & GoodLuck~~ 發表人 -
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-03-07 20:04:57 IP:218.162.xxx.xxx 未訂閱
引言: 建議您可以看看數位影像處理方面的書籍,就可以知道偵測物件的edge的原理 大致上的原理是這樣的: 一張影像當中,像素劇烈變化的部分(即邊緣部分)為高頻訊號.. 利用一階微分便可偵測到,且利用遮罩便可達到一階微分的效果(ex.Sobel)
taishyang 你好... 影像的書我看很多了..你講的sobel 我也知道.. 但這些都是理論的書...我不懂的是實作... 例如..我現在要割影像..我知道蠻多方法的(理論)... 但是我要以程式來實現時..發現不知該如何下手... ex...我上面講的..要把邊緣改成藍色..最簡單的做法就是 1.左掃到右 2.右掃到左 3.上掃到下 4.下掃道上 做完以上四個就能把影像割出來了...但是要把它寫成程式..我就沒辦法了...
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-03-07 20:27:49 IP:140.135.xxx.xxx 未訂閱
arnotsay您好:
引言: ex...我上面講的..要把邊緣改成藍色..最簡單的做法就是 1.左掃到右 2.右掃到左 3.上掃到下 4.下掃道上 做完以上四個就能把影像割出來了...但是要把它寫成程式..我就沒辦法了...
給您幾個建議,希望您不要介意 <><>您的程式是否需要><> 所以我建議您可用> 您可參考< href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26672">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26672 將低通濾波器改成soble濾波器,接下來再二值化,即可將邊緣圖藍色的 順心 GoodLuck~~~ 發表人 -
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-03-07 20:42:55 IP:218.162.xxx.xxx 未訂閱
引言: 給您幾個建議,希望您不要介意 <><>您的程式是否需要><> 所以我建議您可用> 您可參考< href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26672">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26672 將低通濾波器改成soble濾波器,接下來再二值化,即可將邊緣圖藍色的
你好...歡迎多給我建議... 我知道這個方法很慢...但是我連最慢的方法都寫不出來了.. 還談什麼更快的方法呢? 不知你可以用scanline寫一個1.由左掃到右的程式給我參考嗎? 讓我可以練習2.3.4 最後在整合起來...
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-03-07 20:55:07 IP:140.135.xxx.xxx 未訂閱
arnotsay您好:    
引言:你好...歡迎多給我建議... 我知道這個方法很慢...但是我連最慢的方法都寫不出來了.. 還談什麼更快的方法呢?
接下來我的建議是,這部分要留給您自己去突破(因為不是幾行程式就能解決的),相信對您的程式功力一定會有相當大的幫助,尤其您也是做影像處理的< > 這情況讓我想到一位前輩說的一句話: ***勿築高塔於浮沙之上*** 順心 祝您順利< >
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-03-07 21:22:00 IP:218.162.xxx.xxx 未訂閱
引言: 接下來我的建議是,這部分要留給您自己去突破(因為不是幾行程式就能解決的),相信對您的程式功力一定會有相當大的幫助,尤其您也是做影像處理的 這情況讓我想到一位前輩說的一句話: < face="Verdana, Arial, Helvetica"> 我忽然有點頭緒了...但是又碰到另一個問題... 我將掃到的x,y軸的值存在陣列中...已經存進去了.. 但是要如何把陣列中的值全秀出來呢? 我想先看看我抓進去的值對不對....
kenano
一般會員


發表:6
回覆:5
積分:2
註冊:2002-11-25

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-03-10 23:45:21 IP:140.118.xxx.xxx 未訂閱
給arnotsay一個建議 這是使用一個遞迴的觀念! 我的做法是使用scanline從圖的左至右 當遇到1的值時,便呼叫副程式 它的作用可以計算這區塊內所有值不為0的pixels數 運算方式為依序尋找此"1"值的上、下、左、右是否有1的值 當同樣有1的值時,countmath 1且令那個1值變成0 依照遞迴的概念,此副程式會反覆尋找到此區塊的1值都變成0後結束 你要的面積就可以從countmath得到! void math (int i,int j) { pixelvalue[i][j]=0; countmath ; totali=totali i;//縱座標 totalj=totalj j; //橫座標 if(pixelvalue[i][j 1]) math(i,j 1); if(pixelvalue[i 1][j]) math(i 1,j); if(pixelvalue[i][j-1]) math(i,j-1); if(pixelvalue[i-1][j]) math(i-1,j); }
mkchuang
一般會員


發表:1
回覆:10
積分:7
註冊:2002-12-18

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-03-11 02:00:40 IP:163.28.xxx.xxx 未訂閱
引言:
引言: 建議您可以看看數位影像處理方面的書籍,就可以知道偵測物件的edge的原理 大致上的原理是這樣的: 一張影像當中,像素劇烈變化的部分(即邊緣部分)為高頻訊號.. 利用一階微分便可偵測到,且利用遮罩便可達到一階微分的效果(ex.Sobel)
taishyang 你好... 影像的書我看很多了..你講的sobel 我也知道.. 但這些都是理論的書...我不懂的是實作... 例如..我現在要割影像..我知道蠻多方法的(理論)... 但是我要以程式來實現時..發現不知該如何下手... ex...我上面講的..要把邊緣改成藍色..最簡單的做法就是 1.左掃到右 2.右掃到左 3.上掃到下 4.下掃道上 做完以上四個就能把影像割出來了...但是要把它寫成程式..我就沒辦法了...
嗨,推薦你去書局翻一下 鍾國亮教授寫的"影像處理與電腦視覺" 除了一般影像處理的書都有的理論敘述之外 這本書後來也會附一些程式範例,可以參考看看, 希望對你有幫助
系統時間:2024-11-23 11:30:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!