1. 完成一個主函數調用三個功能的子函數。并顯示圖像處理后的結果。如果輸入圖像是彩圖,RGB三個通道請做相同處理
2. 子函數完成如下功能:
(1). 對原始的8bits圖像進一步均勻量化,量化函數入口參數img和量化的位數bits,出口參數為量化后的圖像,請參考附件給出的函數quantize_image說明;(2). 對輸入圖像完成二值抖動。參考課件25頁,typical methods中的方法3.具體步驟包括 i). 構建抖動模板,要求模板大小通過參數可調,模板中每個整數僅出現一次,位置隨機; ii). 根據抖動模板的大小完成完成對原始圖像的均勻量化; iii). 根據量化后的值與模板對應位置比較大小產生二值圖。(3). 對輸入圖像完成Floyd_Steinberg抖動。 要求和注意事項: i). 量化函數可用子函數(1)代替find_closest_palette_color(); ii). 注意處理后的結果不能越界;
0.png (46.15 KB, 下載次數: 23)
下載附件
2019-4-9 21:23 上傳
下面是主函數的代碼,各個子函數代碼在附件內:
主函數:
clear;
%定義全局變量
pattern_size=8;%dither函數的參數
dbits_color=6;
dbits_gray=2;
image_old_color=imread('lena.jpg');
image_old_gray=imread('lena.bmp');
subplot(2,3,1);
imshow(image_old_color);
title('原彩色圖像');
subplot(2,3,4);
imshow(image_old_gray);
title('原黑白圖像');
image_d_color=dither_by_pattern(image_old_color, pattern_size); %dither函數可以直接處理彩色圖像或黑白圖像
subplot(2,3,2);
imshow(image_d_color);
title('dither函數處理彩色圖像');
image_d_gray=dither_by_pattern(image_old_gray, pattern_size); %dither函數可以直接處理彩色圖像或黑白圖像
subplot(2,3,5);
imshow(image_d_gray);
title('dither函數處理黑白圖像');
image_f_color=floyd_steinberg(image_old_color, dbits_color);
subplot(2,3,3);
imshow( image_f_color );%floyd函數可以直接處理彩色圖像或黑白圖像
title('floyd函數處理彩色圖像');
image_f_gray=floyd_steinberg(image_old_gray, dbits_gray);
subplot(2,3,6);
imshow( image_f_gray );%floyd函數可以直接處理彩色圖像或黑白圖像
title('floyd函數處理黑白圖像');
psnr_color=PSNR(image_old_color,image_f_color)
psnr_gray=PSNR(image_old_gray,image_f_gray)
全部資料51hei下載地址:
MATLAB_圖像抖動.zip
(78.66 KB, 下載次數: 54)
2019-4-9 20:13 上傳
點擊文件名下載附件
matlab代碼 下載積分: 黑幣 -5
|