matlab實現 基於若干個高階位元平面的影象重構 程式碼
阿新 • • 發佈:2018-12-17
題目:基於上一篇位元平面分層的結果,利用前3個或4個高階位元平面重構影象image_construct (EXP3C.tif),並對比重構影象與相應原影象的差異性。
提示:可採用影象相減獲取原影象與重構影象的差值影象,以對比和分析原影象及重構影象的差異性,如重構影象缺失的主要資訊是什麼。
步驟:
1. 使用上一篇位元平面分層實現的函式獲得影象的8位元平面圖像
2. 重構前4位元平面,即使用第n個位元平面的畫素乘以常數2的n-1次方相加,得到前n位元平面重構後的影象
3. 使用原影象減去重構前4位元平面,得到差值影象
實現效果演示:
為了演示重構前後的對比效果,重構了前6位元平面和前4位元平面,輸出並作對比。
實現原始碼:
clc;clear;close all; img1 = imread('EXP3B.tif'); img2 = myImageBitPlaneSlicing(img1);%獲取影象的8位元平面 img3 = img2(:,:,1)*1 + img2(:,:,2)*2 + img2(:,:,3)*4 + img2(:,:,4)*8;%重構前4位元影象 img3 = uint8(img3);%將影象轉換為和原圖相同的型別 img4 = img1 - img3;%獲取差值影象 %顯示影象 figure('NumberTitle', 'off', 'Name', '實驗一第三題'); subplot(2,3,1);imshow(img1);title('EXP3B.tif原始影象'); subplot(2,3,2);imshow(img3);title('4位元平面重構'); subplot(2,3,3);imshow(img4);title('差值影象'); img1 = imread('EXP3C.tif'); img2 = myImageBitPlaneSlicing(img1);%獲取影象的8位元平面 img3 = img2(:,:,1)*1 + img2(:,:,2)*2 + img2(:,:,3)*4 + img2(:,:,4)*8;%重構前4位元影象 img3 = uint8(img3);%將影象轉換為和原圖相同的型別 img4 = img1 - img3;%獲取差值影象 %顯示影象 subplot(2,3,4);imshow(img1);title('EXP3C.tif原始影象'); subplot(2,3,5);imshow(img3);title('4位元平面重構'); subplot(2,3,6);imshow(img4);title('差值影象');