[問題] 關於取RGB顏色的問題已回收

看板MATLAB作者 (ICK)時間16年前 (2009/11/30 16:36), 編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/1
x(j+1,i+1,3)=k(j+1,i+1,3); k是一張圖片的顏色矩陣, k(j+1,i+1,3), ^^^ 此3應該是RGB中的B的顏色, k(j+1,i+1,1), ^^^ 此1是RGB中的R的顏色.. R和B在跑程式中都很順利 都可以跑.. 但我要換G時,就會出現錯誤..XD 以下是錯誤碼.. ??? Error using ==> imageDisplayValidateParams>validateCData at 114 Unsupported dimension Error in ==> imageDisplayValidateParams at 31 common_args.CData = validateCData(common_args.CData,image_type); Error in ==> imageDisplayParseInputs at 79 common_args = imageDisplayValidateParams(common_args); Error in ==> imshow at 199 [common_args,specific_args] = ... 為什麼會這樣?如何解決? 幫我第一個解決的人我給他一百P幣..^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.164.246

11/30 18:12, , 1F
你可能要附上完整的程式碼比較好看出錯誤在哪
11/30 18:12, 1F
好的.. clear all; kk=imread('new56.jpg'); for i=0:383 for j=0:238 x(j+1,i+1,3)=kk(j+1,i+1,3); end; end; for i=0:381 for j=0:236 xx1=double(x(1+j,1+i,3)); xx2=double(x(1+j,2+i,3)); xx3=double(x(1+j,3+i,3)); xx4=double(x(2+j,1+i,3)); xx5=double(x(2+j,3+i,3)); xx6=double(x(3+j,1+i,3)); xx7=double(x(3+j,2+i,3)); xx8=double(x(3+j,3+i,3)); x1=(xx1+xx2+xx3+xx4+xx5+xx6+xx7+xx8)/8; t1=(xx1-x1)^4; t2=(xx2-x1)^4; t3=(xx3-x1)^4; t4=(xx4-x1)^4; t5=(xx5-x1)^4; t6=(xx6-x1)^4; t7=(xx7-x1)^4; t8=(xx8-x1)^4; x3(2+j,2+i,3)=min(255,(double((t1+t2+t3+t4+t5+t6+t7+t8)/8))/1000); end end imshow(x3);

11/30 21:04, , 2F
嗯...維度錯了
11/30 21:04, 2F

11/30 21:05, , 3F
可能影像來源只有一維喔..猜得
11/30 21:05, 3F
如果取G的維度是錯的,那為什麼取R和B郤是可以很順利? = = ※ 編輯: psw 來自: 140.116.164.246 (11/30 23:40) ※ 編輯: psw 來自: 140.116.164.246 (11/30 23:50)

12/01 01:18, , 4F
因為你倒數第四行.... 等於1的時候會變二值化的影像
12/01 01:18, 4F

12/01 01:19, , 5F
然後等於3的時候會剛好等於RGB的影像!
12/01 01:19, 5F

12/01 01:20, , 6F
可是在imshow的時候 沒有第三個維度是2的情況!
12/01 01:20, 6F

12/01 01:21, , 7F
所以你的imshow會出錯!你的code裡面有些部份可以簡化
12/01 01:21, 7F
文章代碼(AID): #1B4uGQIT (MATLAB)