上一篇我们用matlab实现了图像的比特平面分层,并且定义一个用于比特平面分层的函数,这一片文章我们将要用到上次定义的比特平面分层函数,可以前往https://blog.csdn.net/weixin_37139761/article/details/83386858 查看比特我们定义的函数。
题目:基于上一篇比特平面分层的结果,利用前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('差值图像');