我有下面的Matlab代码来处理两个图像,灰度图像和RGB
图像。关键是要在两个图像上应用Average
,Gaussian
和Laplacian
过滤器。
%%Clear
clear
clc
%%Reading images
gray=imread('cameraman.tif')
[gray_table gray_map]=gray2ind(gray,256)
rgb=imread('peppers.png')
[rgb_table rgb_map]=rgb2ind(rgb,256)
%%Creating filters
average=fspecial('average',3)
gaussian=fspecial('gaussian',3,0.5)
laplacian=fspecial('laplacian',0.9)
%%Applying filters
average_filterd_gray_table=imfilter(gray_table,average)
gaussian_filterd_gray_table=imfilter(gray_table,gaussian)
laplacian_filterd_gray_table=imfilter(gray_table,laplacian)
average_filterd_rgb_table=imfilter(rgb_table,average)
gaussian_filterd_rgb_table=imfilter(rgb_table,gaussian)
laplacian_filterd_rgb_table=imfilter(rgb_table,laplacian)
%%view
figure
subplot(1,4,1),imshow(gray_table,gray_map),title('Original Indexed Gray')
subplot(1,4,2),imshow(average_filterd_gray_table,gray_map),title('Average Filtered Indexed Gray')
subplot(1,4,3),imshow(gaussian_filterd_gray_table,gray_map),title('Gaussian Filtered Indexed Gray')
subplot(1,4,4),imshow(laplacian_filterd_gray_table,gray_map),title('Laplacian Filtered Indexed Gray')
figure
subplot(1,4,1),imshow(rgb_table,rgb_map),title('Original Indexed RGB')
subplot(1,4,2),imshow(average_filterd_rgb_table,rgb_map),title('Average Filtered Indexed RGB')
subplot(1,4,3),imshow(gaussian_filterd_rgb_table,rgb_map),title('Gaussian Filtered Indexed RGB')
subplot(1,4,4),imshow(laplacian_filterd_rgb_table,rgb_map),title('Laplacian Filtered Indexed RGB')
该代码适用于灰度图像。但是在RGB图像上,它只会给出失真的结果。如何解决?
根据文档rgb2ind
(单击此处):
像这样加载RGB图像时:
[X,map] = rgb2ind(RGB,n)
,该文档说:
注意生成的图像X中的值是颜色图映射的索引,不应在数学处理(例如过滤操作)中使用。
因此,最好直接过滤RGB图像。以下工作正常:
clear
clc
close all
RGBImage = imread('peppers.png');
average = fspecial('average',3);
gaussian=fspecial('gaussian',3,0.5);
laplacian=fspecial('laplacian',0.9);
RGB_Average = imfilter(RGBImage,average);
RGB_Gaussian= imfilter(RGBImage,gaussian);
RGB_Laplacian = imfilter(RGBImage,laplacian);
figure;
subplot(2,2,1)
imshow(RGBImage)
title('Original')
subplot(2,2,2)
imshow(RGB_Average)
title('Average')
subplot(2,2,3)
imshow(RGB_Gaussian)
title('Gaussian')
subplot(2,2,4)
imshow(RGB_Laplacian)
title('Laplacian')
这给出了:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句