问题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('叠加')