数字图像处理笔记

一、图像颜色模型处理

1.读入一幅彩色图像,显示图像以及R、G、B三个分量的图像。

2.把原图像转为HSV模型,显示H、S、V三个分量的图像。

3.把原图像转为灰度图像,显示灰度图像及其灰度直方图,并以bmp文件格式保存灰度图像。

img=imread('peppers.JPG');
subplot(2,2,1);
imshow(img)

subplot(2,2,2);imshow(img(:,:,1));%显示图像R分量
subplot(2,2,3);imshow(img(:,:,2));%显示图像G分量
subplot(2,2,4);imshow(img(:,:,3));%显示图像B分量

figure
subplot(2,2,1);
imshow(img)
img_hsv=rgb2hsv(img);%将RGB转换为HSV
subplot(2,2,2);imshow(img_hsv(:,:,1));%显示图像H分量
subplot(2,2,3);imshow(img_hsv(:,:,2));%显示图像S分量
subplot(2,2,4);imshow(img_hsv(:,:,3));%显示图像V分量


img_gray=rgb2gray(img);%将RGB转化成灰度图
figure,imshow(img_gray);%显示灰度图像
imhist(img_gray);%显示灰度直方图
imwrite(img_gray,'peppers_gray.bmp');%将灰度图像保存为bmp格式

二、图像逻辑运算

1.实现car.jpg和dessert.jpg两幅图像相加;实现hallforeground.bmp和hallback.bmp两幅图像相减;实现bird.jpg和birdtemplet.bmp两幅图像相乘。

2.读入一幅图像,对其进行平移、旋转、错切变换。

img_car=imread('car.jpg');
img_desert=imread('desert.jpg');
img_hallforeground=imread('hallforeground.bmp');
img_hallback=imread('hallback.bmp');
img_bird=imread('bird.jpg');
img_birdtemplet=imread('birdtemplet.bmp');

%相加
img_car_add_desert=imadd(img_car,img_desert);%将两幅图像相加
subplot(2,3,1)
imshow(img_car_add_desert);%显示相加后的照片

%相减
img_hallforeground_sub_hallback=imsubtract(img_hallback,img_hallforeground);%将两幅图像相减
subplot(2,3,2)
imshow(img_hallforeground_sub_hallback);%显示相减后的图片

%相乘
img_bird_mul_birdtemplet=immultiply(img_bird,img_birdtemplet);%将两幅图相乘
subplot(2,3,3)
imshow(img_bird_mul_birdtemplet);%显示相乘后的图片

%平移
img_translation=imtranslate(img_car,[-200,-50]);%对图像进行平移
subplot(2,3,4)
imshow(img_translation);%显示平移后的图片

%旋转
img_bird_rotation=imrotate(img_bird,45);%将图片旋转45度
subplot(2,3,5)
imshow(img_bird_rotation);%显示旋转后的图片

%图像错切
tform = maketform('affine',[1,0,0;0,1,0;50,100,1]);             % 创建tform结构
% 对图片进行平移,这里需要指定图像范围,否则观察不出效果
img_translation = imtransform(img_bird,tform,'XData',[1 size(img_bird,2)],'YData',[1 size(img_bird,1)]);
figure
subplot(3,1,1)
imshow(img_translation)         % 显示平移后的图片

tform = maketform('affine',[sqrt(2)/2 sqrt(2)/2 0;-sqrt(2)/2 sqrt(2)/2 0;0 0 1]);   % 创建tform结构
img_rotation = imtransform(img_bird, tform);                    % 对图片进行旋转45°
subplot(3,1,2)
imshow(img_rotation)            % 显示旋转后的图片

tform = maketform('affine',[1 0 0; 0.5 1 0;0 0 1]);             % 创建tform结构
img_shear = imtransform(img_bird, tform);                       % 对图片进行水平错切
subplot(3,1,3)
imshow(img_shear)               % 显示错切后的图片

三、图像离散傅里叶变换处理

1.产生如图1所示图像,其中图像大小为256×256,中间亮条为128×32,暗处=0,亮处=100。对其进行二维离散傅里叶变换,显示变换后的频谱和能量谱。

图 1

2.把图1中的中间亮条顺时针旋转45度,图像大小仍然为 256×256。对其进行二维离散傅里叶变换,显示变换后的频谱和能量谱。

3.对图1进行二维离散余弦变换,显示变换后的频谱。

img_prospect = 100*ones(128,32);                        % 生成前景
tform = maketform('affine',[1 0 0;0 1 0;112 64 1]);     % 创建平移tform
img = imtransform(img_prospect,tform,'XData',[1 256],'YData',[1 256]);  % 对前景平移,并产生背景
figure
subplot(1,3,1)
imshow(img)      % 显示图片

%图像离散傅里叶变换
img_fft = fft2(img);    % 对图片进行离散傅里叶变换
fshift = fftshift(img_fft);         % 直流分量移到频谱中心
spectrum = log(1+abs(fshift)); 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值