《数字图像处理-空域增强实验|CSDN创作打卡》杭州电子科技大学

作业一:伪彩色变换

问题1:自己编程实现伪彩色处理的算法。图像的伪彩色处理指通过将每一个灰度级匹配到彩色空间上的一点,将灰度图像映射为一副彩色图像。输出的彩色图像效果自行设计,转换的公式在文档中写明。实验用图像自行选择。

  1. 灰度级与伪色彩的对应关系算法:

方法:分别用三个矩阵保存,三个通道的灰度值。每个通道的灰度值,有不同的映射函数。

输入灰度级        输出彩色

0~63  1/4         蓝色

64~127 2/4        紫色

128~191 3/4       黄色

192~255  4/4      红色

clc;
clear;
grayImage=rgb2gray(imread('1.jpg'));
figure,imshow(grayImage);
[row,col]=size(grayImage);
range=255;%每个通道的最大灰度值
 
R = zeros(row,col);
G = zeros(row,col);
B = zeros(row,col);
for i=1:row
     for j=1:col
        if grayImage(i,j)<=range/4% [0,64]偏蓝
            R(i,j)=0;
            G(i,j)=4*grayImage(i,j);
            B(i,j)=range;
            else if grayImage(i,j)<=range/2% (64,128] 偏紫
                 R(i,j)=0;
                 G(i,j)=range;
                 B(i,j)=-4*grayImage(i,j)+2*range;
                else if grayImage(i,j)<=3*range/4% (128, 192]
                        R(i,j)=4*grayImage(i,j)-2*range;
                        G(i,j)=range;
                        B(i,j)=0;
                     else
                        R(i,j)=range;
                        G(i,j)=4*(range-grayImage(i,j));
                        B(i,j)=0;
                    end
                end
        end
    end
end
 
out = zeros(row,col);
for i=1:row
    for j=1:col
              out(i,j,1)=R(i,j);
              out(i,j,2)=G(i,j);
              out(i,j,3)=B(i,j);
    end
end
 
out=out/256;
figure,imshow(out);

作业二:彩色图像的平滑/去噪

问题1:编写程序,对一副灰度图像添加噪声。选择高斯噪声、椒盐噪声或者其他噪声的任意两种,输出结果图像;

问题2:使用问题1中添加噪声的图像,分别采用3*3、5*5 和 7*7,三种尺寸的高斯模板进行平滑,输出结果图像,并分析实验效果。

椒盐噪声:噪声幅值基本相同,但出现位置随机。

斯噪声:图像中每一点都存在噪声,但幅值是随机分布的。

image=imread('1.jpg');
[width,height,z]=size(image);
if(z>1)
    image=rgb2gray(image);
end
figure(2);
subplot(1,2,1);
imshow(image);
title('原图');
av=0;
std=0.1;
u1=rand(width,height);
u2=rand(width,height);
x=std*sqrt(-2*log(u1)).*cos(2*pi*u2)+av;
result1=double(image)/255+x;
result1=uint8(255*result1);
 
subplot(1,2,2);
imshow(result1);
title('加高斯噪声后');
#添加椒盐噪声
image=imread('1.1.jpg');
[width,height,z]=size(image);
if(z>1)
    image=rgb2gray(image);
end
result2=image;
figure(2);
subplot(1,2,1);
imshow(image);
title('原图');
k1=0.1;
k2=0.3;
a1=rand(width,height)

 
clear,clc;
 
% 读取图像
Img = imread('1.1.1.png');
M = size(Img);
if numel(M)>2
    gray = rgb2gray(Img);
else
    gray = Img;
end
 
% 创建滤波器
W = fspecial('gaussian',[5,5],1); 
G = imfilter(gray, W, 'replicate');
figure(1);
subplot(121); imshow(gray); title('原始图像');
subplot(122); imshow(G);    title('平滑后图像');

作业三:图像锐化

问题1:自己设计合适大小的模板(可以参考Sobel算子能够检测x和y方向的原理),能够检测正负45度斜方向上的图像细节,输出正45度,负45度,以及两者相叠加后的图像结果;

问题2:将上述步骤提取的图像细节,叠加到原图上,分析和比较锐化后的效果。

源代码:

clear, close all
% 检测正45°方向的模板
h1 = [ -1  0  0;
        0  2  0;
        0  0 -1];
% 检测负45°方向的模板
h2 = [  0  0 -1;
        0  2  0;
       -1  0  0];
im = imread('1.jpg');
 
im= rgb2gray(im);
subplot(2,2,1), imshow(im), title('原图')
 
im_filter_1 = filter2(h1, im)/255;
subplot(2,2,2), imshow(im_filter_1), title('45°')
 
im_filter_2 = filter2(h2, im)/255;
subplot(2,2,3), imshow(im_filter_2), title('-45°')
 
im_filter_3 = filter2(h1+h2, im)/255;
subplot(2,2,4), imshow(im_filter_3), title('叠加')

你可能感兴趣的:(MATLAB,数字图像处理,matlab,图像处理,数字信号处理)