MATLAB 板


LINE

讀取圖片檔(tif) 假設圖片檔是叫a A=imread(a.tif) 所以舉陣A 裡面都是uint8的格式 (都是整數) 但我需要運算 比如 B=(36*A)/23 之類的 總之就是做加減乘除 會出現小數 因為我想保留這些小數 (因為需要這小數去分析 才會比較明顯) 為了要保留小數 所以加了double這個指令 不然uint8的格式 怎麼加減乘除都還只保留整數 所以我在運算的時候 變成這樣 B=36*double(A)/23 問題來了 加了double 卻出現的這個錯誤 ??? Error using ==> image Error using ==> image TrueColor CData contains element out of range 0.0 <= value <= 1.0 Error in ==> imagesc at 19 hh = image(varargin{1},'CDataMapping','scaled'); Error in ==> Untitled_Tb at 45 imagesc(B); 拜託 高手幫忙解決 以2000p當小小的回饋了 ------------------- 這是我大體的程式 B=imread(A); rad61 = (Lmax61-Lmin61)./(Qcalmax61-Qcalmin61).*((B)-Qcalmin61)+Lmin61; |加double的地方 (Lmax61 Lmin61 Qcalmax61 Qcalmin61) 這些都是常數 idx = find(real(rad61) <= 0.); rad61(idx) = NaN; T61=K2./(log((double(K1./rad61))+1))-273.16; T61(T61<=-5)=NaN; T61(T61>35)=NaN; figure(1); imagesc(T61); 因為我畫是跟地區溫度有關的圖 所以會需要到0~35左右 然後真的用手去驗算 值也差不多是0~35 所以感覺是畫圖的指令 imagesc(T61); 錯誤 想請問 還有其他畫圖推薦的指令 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.184.86
1F:→ abc01251:你確定錯在那行嗎 我打 沒問題 可以過 04/16 21:49
2F:→ abc01251:imagesc(uint8(B)); << 這邊吧~ 04/16 21:52
3F:→ doom8199:因為 imagesc 函式要求值要介於 0~1 04/16 21:52
4F:推 vincent59:我也覺得沒問題??? 04/16 21:52
5F:→ doom8199:若你是讀取 rgb 圖片,要先除以 255.0 04/16 21:53
6F:→ vincent59:所以原po問的是秀圖的部分?? 04/16 21:53
恩恩 很像真的是後面我畫imagesc(B) 需要在0~1之間 但我的圖 希望能顯示 0~35之間 就是溫度的 可以不要只能在0~1之間嗎?? 感謝
7F:→ doom8199:看錯誤訊息是如此@@'' 04/16 21:53
※ 編輯: y1027330 來自: 114.32.184.86 (04/16 22:03)
8F:推 vincent59:你可以參考10455 04/16 21:59
9F:推 abc01251:我加 uint8 就過了 你可以試試看 04/16 22:08
10F:→ abc01251:不過數字會跑掉XD 04/16 22:08
11F:推 okgogogo:不就只能0~1...B那麼大 04/16 22:09
※ 編輯: y1027330 來自: 114.32.184.86 (04/16 22:14)
12F:→ okgogogo:溫度應該用 pcolor or contourf or colorbar 請查help 04/16 22:14
13F:→ y1027330:不加double 數字只會整是 我需要他的小數 04/16 22:14
※ 編輯: y1027330 來自: 114.32.184.86 (04/16 22:16)
14F:→ y1027330:V大 我有參考你在那邊的推文 但我造著做就是一片黑 04/16 22:17
※ 編輯: y1027330 來自: 114.32.184.86 (04/16 22:19)
15F:推 doom8199:秀圖有很多種方法,重點是你想要呈現何種數據 04/16 22:21
16F:→ doom8199:例如 x 和 y 同樣是介於 0~1 的數據 04/16 22:22
17F:→ y1027330:我想呈現就是真實T61的值 04/16 22:22
18F:→ doom8199:只要做個如 y = x^n, n>0 的轉換 04/16 22:23
19F:→ y1027330:比如我們點開 T61這個矩陣 他是多少 就想畫出多少 QQ 04/16 22:23
20F:→ doom8199:intensity 就會有所改變 04/16 22:23
21F:→ doom8199:那你就是先把你想要的數據處理好,在調整為 0~1 or 0~255 04/16 22:25
22F:推 vincent59:會一片黑因為得再將值拉回255(imshow) 04/16 22:36
23F:→ vincent59:照doom8199教的方法試看看 04/16 22:37
24F:→ y1027330:那我想要她呈現值在0~255之間 我要怎麼做?? 04/16 22:38
25F:推 vincent59:首先B的範圍?如果是0~1(資料型態:uint8) 04/16 22:45
26F:→ vincent59:那不難,B=B*255; 04/16 22:45
27F:→ y1027330:B的範圍是0~255 04/16 22:46
28F:→ y1027330:應該說我們讀的A是0~255然後再去做一些加減乘除 04/16 22:47
29F:→ y1027330:最後經過運算 就會落在大約是0~35 左右 04/16 22:47
30F:→ y1027330:剛好可以表達我們溫度 當然代的那些常數是經驗式得到 04/16 22:48
31F:→ y1027330:所以我希望畫出來就是能呈現大約 0~35左右的圖 04/16 22:48
32F:推 vincent59:所以最後你要的range是0~35囉?? 04/16 22:49
33F:→ y1027330:沒錯!!!!! 04/16 22:51
34F:推 vincent59:B=36*double(A)/23 這行算出來的range是0~255?? 04/16 22:53
35F:→ doom8199:0~35 那個是數據,並非是顏色 04/16 22:53
36F:→ y1027330:對!! 但我畫的圖 就是想呈現 0~35這個矩陣裡面的數值 04/16 22:54
37F:→ doom8199:秀圖跟你數據的範圍沒啥太大關係 04/16 22:54
38F:→ y1027330:拜託了 有什麼拜辦法 04/16 22:54
39F:→ doom8199:所以你 35 那個數據,真的就代表 nrmalize graylevel 04/16 22:55
40F:→ doom8199:0~255 中的 35 ? 04/16 22:55
41F:→ y1027330:其實也不依定是35 這個值也只是運算後 大約的最大值 04/16 22:56
42F:推 vincent59:所以是數據呢還是顏色??? 04/16 22:56
43F:→ y1027330:對阿 因為這是前人的研究 所以他們是經過經驗式 04/16 22:56
44F:→ y1027330:所以會很巧的 剛好把0~255的值換算後 大約就會介於0~35 04/16 22:57
45F:→ y1027330:所以就可以表達我們地區的溫度 04/16 22:57
46F:→ y1027330:然後 我就想要畫出這個值 04/16 22:58
47F:→ doom8199:所以那只是數據而已. 您只是想用顏色強度or鮮豔度來表示 04/16 22:59
48F:→ doom8199:0~35 的數據. 那就跟秀圖的0~1 or 0~255 沒關係 04/16 22:59
<--這之前沒錯 後面有點不懂
49F:→ doom8199:會要你把B的data 調整為 0~1 or 0~255 04/16 23:00
50F:→ doom8199:只是要你配合現有matlab 的函式+顏色表示你的數據而已 04/16 23:01
有點聽不懂 把B的data 調整為 0~1 or 0~255 ※ 編輯: y1027330 來自: 114.32.184.86 (04/16 23:02)
51F:→ doom8199:不要把 normalize 的color數據當成是你真的 0~35 數值 04/16 23:01
52F:推 doom8199:意思是,你要自己定義好顏色 c 跟數據 x 的關係 04/16 23:04
53F:→ y1027330:所以意思是 我換算後的T61 裡面的值不是數值 是顏色的值 04/16 23:04
54F:→ y1027330:所以T61裡面 就算是0~35 然後我就要去找一個函數 去把她 04/16 23:05
55F:→ y1027330:數值化 是這個意思嗎??? 04/16 23:06
56F:推 vincent59:如同doom8199說明的 04/16 23:06
57F:→ abc01251:你的T61 是二維還三維?? 04/16 23:07
58F:推 vincent59:原po知道如何將顏色數值化吧??? 04/16 23:09
59F:→ y1027330:不知道 QQ 是三維 04/16 23:10
60F:→ abc01251:擬改成 imagesc(T61(:,:,1)); 我剛剛試過三維好像不能用 04/16 23:11
61F:推 vincent59:http://ppt.cc/I9@0 先稍微看一下 04/16 23:15
62F:→ vincent59:我先下線一下 doom8199真的滿會暸解別人想問什麼? 04/16 23:16
63F:→ y1027330:大約了解 我明天再問問別人 感謝兩位 04/16 23:26
64F:→ doom8199:原po若還不太清楚 c 跟 x 要如何定義,就直接打 04/16 23:30
65F:→ doom8199:imshow(uint8(T61*255.0/40.0)) 04/16 23:32
66F:→ doom8199:打錯,應該是 imshow(uint8((T61+5.0)*255.0/40.0)) 04/16 23:33
67F:→ y1027330:這樣uint8打完 是不是會把小數點 用掉阿 我希望能保留 qq 04/16 23:56
68F:推 doom8199:若你想把它存成圖檔, 一樣會做量化等動作阿XD 04/17 08:53
69F:→ doom8199:基本上您打 imshow((T61+5.0)/40.0)) 也是一樣的意思 04/17 08:57
70F:→ doom8199:若您只是要保留資料,直接save就好,無須存成圖檔 04/17 08:58







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP