看板 MATLAB 關於我們 聯絡資訊
這是我的程式碼 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
gotohalf:忘了說 S1 是GUI滑桿的值 03/31 15:08
vincent59:double(img1) 03/31 20:23
vincent59:本來我打了一長串,因為我覺得你(妳)的gui code有問題 03/31 20:24
vincent59:其實你可以不用分成 R、G、B三個做運算 04/01 00:48
vincent59:運算式要再乘255,否則以你目前寫的應該是1片黑 04/01 00:52
gotohalf:感謝! 我寫出來了 正規化完忘記乘尺度 04/01 12:47
gotohalf:影像最後把RGB合成是不是只能把他的資料轉成uint8阿 04/01 12:48
vincent59:根據我的經驗在大部分情況的確是這樣 04/01 15:16
vincent59:總之在成像上 數值範圍:0~255 04/01 15:17
vincent59:當然有個有趣發現可以跟您分享 04/01 15:50
vincent59:img=imread('lena.jpg');%讀檔 04/01 15:51
vincent59: img2=(double(img)/255).^(1.4); 04/01 15:51
vincent59:imshow(img2) 04/01 15:52
vincent59:這樣就可以正確成像了 04/01 15:52
gotohalf:感謝高人指點!!! 04/02 01:40