精華區beta MATLAB 關於我們 聯絡資訊
三個流程: 1.載入小圖庫,縮小截圖取得平均色階.. 縮小有很多種方式,在此我用以下的方式 我是切區塊,算出區塊平均色階,然後依平均色階再輸出顏色,即為縮小 例如:圖片 640x480 切割區塊大小 10X10 然後以每 10X10 區塊,計算此區塊平均色階並記錄之,換言之, 最後會得到一個 64X48 之區塊平階均色階,然後依每個色階輸出顏色點 即得到一個64X48的新圖片,也就是說縮小十倍。 在此截圖為 20X20 2.主圖片切割,求得平均色階。 上一點會用那個方法,主要是延用在此一功能,上一點主要是得到新的圖片 而此點,主要求得 64X48 之區塊平階均色階陣列。 3.小圖輸出至大圖 依照大圖的 64X48 的色階陣列,與小圖20X20 的整張平均色階,做比較, 在此是以 mask的方式 把小圖的平均色階,平移至與大圖色階陣列的每一點 值一致,然後再進行輸出。 64X48 個點,與每個小圖 20X20 做輸出後,最後就是得到一張 1280X960 的蒙太奇效應之圖片 道理其實不會難,就是要寫的時候比較麻煩,拿紙筆畫一畫會比較清楚寫作。 ps..計算平均色階 兩種方式,一種就是全部加起來再除全部的點數 第二種就是計算色階分佈,然後依分佈乘上分佈值再除全部點數 以下提供我的片段寫作(第二種方式) ============================================= dourect = size(imblok,1)*size(imblok,2); hR = zeros(1,256); %色階分佈 hG = zeros(1,256); %色階分佈 hB = zeros(1,256); %色階分佈 blockR = imblok(:,:,1); blockG = imblok(:,:,2); blockB = imblok(:,:,3); aodblock = zeros(1,3); %%計算色階分佈 for k = 1: dourect hR(blockR(k)+1) = hR(blockR(k)+1) + 1; hG(blockG(k)+1) = hG(blockG(k)+1) + 1; hB(blockB(k)+1) = hB(blockB(k)+1) + 1; end %%計算平均色階 for k = 1: 256 aodblock(1) = aodblock(1) + k*hR(k); aodblock(2) = aodblock(2) + k*hG(k); aodblock(3) = aodblock(3) + k*hB(k); end aodblock(1) = aodblock(1)/dourect; aodblock(2) = aodblock(2)/dourect; aodblock(3) = aodblock(3)/dourect; ============================================= http://0rz.net/c90We (縮小看會比較看得出來) http://0rz.net/a40Xg (原圖) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.105.122