[問題]有關影像矩陣開次方的問題

看板MATLAB作者 (大米兒)時間13年前 (2012/03/31 15:07), 編輯推噓5(5010)
留言15則, 2人參與, 最新討論串1/1
這是我的程式碼 function Gamatest(hObject,handles) s1 = handles.s1; [m n] = size(handles.img1); imgR = uint8(handles.img1(:,:,1)); imgG = uint8(handles.img1(:,:,2)); imgB = uint8(handles.img1(:,:,3)); img2R = (imgR/255).^s1; img2G = (imgG/255).^s1; img2B = (imgB/255).^s1; img2(:,:,1) = img2R; img2(:,:,2) = img2G; img2(:,:,3) = img2B; axes(handles.axes1); imshow(img2); ---------------------------------------- img1是我讀進的圖檔 我把他分解成RGB三個矩陣 然後再img2R img2G img2B做GAMMA 修正 但是我現在執行的時候跑出錯誤 "??? Integers can only be raised to positive integral powers." 是哪裡的資料類型出錯了嗎 我知道有imajust這個函式可以用 但是我只想知道 我這樣寫是哪裡出問題了 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.160.218.133

03/31 15:08, , 1F
忘了說 S1 是GUI滑桿的值
03/31 15:08, 1F

03/31 20:23, , 2F
double(img1)
03/31 20:23, 2F

03/31 20:24, , 3F
本來我打了一長串,因為我覺得你(妳)的gui code有問題
03/31 20:24, 3F

04/01 00:48, , 4F
其實你可以不用分成 R、G、B三個做運算
04/01 00:48, 4F

04/01 00:52, , 5F
運算式要再乘255,否則以你目前寫的應該是1片黑
04/01 00:52, 5F

04/01 12:47, , 6F
感謝! 我寫出來了 正規化完忘記乘尺度
04/01 12:47, 6F

04/01 12:48, , 7F
影像最後把RGB合成是不是只能把他的資料轉成uint8阿
04/01 12:48, 7F

04/01 15:16, , 8F
根據我的經驗在大部分情況的確是這樣
04/01 15:16, 8F

04/01 15:17, , 9F
總之在成像上 數值範圍:0~255
04/01 15:17, 9F

04/01 15:50, , 10F
當然有個有趣發現可以跟您分享
04/01 15:50, 10F

04/01 15:51, , 11F
img=imread('lena.jpg');%讀檔
04/01 15:51, 11F

04/01 15:51, , 12F
img2=(double(img)/255).^(1.4);
04/01 15:51, 12F

04/01 15:52, , 13F
imshow(img2)
04/01 15:52, 13F

04/01 15:52, , 14F
這樣就可以正確成像了
04/01 15:52, 14F

04/02 01:40, , 15F
感謝高人指點!!!
04/02 01:40, 15F
文章代碼(AID): #1FTgqo9R (MATLAB)