A ’BGR’ image.

22 visualizaciones (últimos 30 días)
Ben Ma
Ben Ma el 8 de Sept. de 2021
Respondida: Image Analyst el 9 de Sept. de 2021
a 3x3 Gaussian filter with BGR image Thanks.

Respuesta aceptada

Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro el 8 de Sept. de 2021
Hello:
First, changing channels is very simple you just need to change the third dimension of the image, e.g.
image1=imread('peppers.png');
imagesc(image1)
Now, let's change channels from RGB to BGR:
image2(:,:,1) = image1(:,:,3);
image2(:,:,2) = image1(:,:,2);
image2(:,:,3) = image1(:,:,1);
imagesc(image2)
Now in terms of the filtering with a Gaussian, if you apply a 3x3 to every channel, that would be the same if you do in RGB or in BGR as you are averaging pixels in a channel.
Hope that answers your question.
  2 comentarios
Ben Ma
Ben Ma el 9 de Sept. de 2021
Can you also apply a 3x3 Gaussian filter to the original RGB image please? thanks
Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro el 9 de Sept. de 2021
Yes, you can apply the filter to the original or to the transformed. E.g. to apply to the RGB you do the following:
image1=imread('peppers.png');
image1_filtered = imfilter(image1, fspecial('Gaussian',3,1));
figure
subplot(221)
imagesc(image1)
subplot(222)
imagesc(image1_filtered)
subplot(223)
imagesc(image1(100:150,100:150,:))
subplot(224)
imagesc(image1_filtered(100:150,100:150,:))
If you want to apply to the transformed, do the same once it has been transformed.

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 9 de Sept. de 2021
Ben, you can use imgaussfilt(). It's very straightforward but let us know if you can't figure out my code below.
clc; % Clear the command window.
clear all;
close all;
workspace; % Make sure the workspace panel is showing.
format short g;
format compact;
fontSize = 15;
fprintf('Beginning to run %s.m ...\n', mfilename);
rgbImage = imread('peppers.png');
subplot(2, 1, 1);
imshow(rgbImage);
title('Original Image', 'FontSize', fontSize);
% Split into channels.
[r, g, b] = imsplit(rgbImage);
% Blur each channel.
sigma = 9; % Whatever.
smoothr = imgaussfilt(r, sigma);
smoothg = imgaussfilt(g, sigma);
smoothb = imgaussfilt(b, sigma);
% Combine individual blurred color channels into a new RGB image.
blurredImage = cat(3, smoothr, smoothg, smoothb);
% Display the blurred image.
subplot(2, 1, 2);
imshow(blurredImage);
caption = sprintf('Blurred with a sigma of %.1f', sigma);
title(caption, 'FontSize', fontSize);

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by