[問題] 矩陣元素換值問題
假設有一張圖檔
用 imread 讀取後叫做 src_img ( size 為 [height,width,3] )
然後我手邊有一個 256x3 的矩陣 color
想把 圖檔中 j-channel 的顏色強度 (i-1) 替換成 color(i,j)
matlab 我是這樣打:
dst_img = src_img;
for i = 1:256
for j = 1:3
[ row, col, ~] = find( src_img(:.:.j) == (i-1));
for k = 1:size(row)
dst_img( row(k), col(k), j) = color(i,j);
end
end
end
------------
[問題一]
若把上面改寫成:
dst_img = src_img;
for i = 1:256
for j = 1:3
dst_img( src_img(:.:.j) == (i-1), j) = color(i,j);
end
end
想請問一下為何這樣寫會出錯 ?
因為 matlab 跑出來的 dst_img, 其 size 會變得很大 QQ
若把 rgb 圖檔分別用2維矩陣儲存
在用上面類似的寫法就會是對的
[問題二]
想請問一下有沒有比較好的精簡寫法 ?
先感謝各位大大們的解惑︿︿
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.211.139
推
12/07 12:00, , 1F
12/07 12:00, 1F
推
12/07 13:15, , 2F
12/07 13:15, 2F
推
12/07 13:21, , 3F
12/07 13:21, 3F
→
12/07 13:22, , 4F
12/07 13:22, 4F
→
12/07 13:26, , 5F
12/07 13:26, 5F
推
12/07 13:48, , 6F
12/07 13:48, 6F
→
12/07 13:48, , 7F
12/07 13:48, 7F
→
12/07 13:50, , 8F
12/07 13:50, 8F
→
12/07 13:50, , 9F
12/07 13:50, 9F