【问题标题】:Apply a gaussian distribution in a specific part of an image在图像的特定部分应用高斯分布
【发布时间】:2014-04-29 12:45:01
【问题描述】:

例如,我有以下图像和相应的蒙版。

我想用高斯 g = @(x,y,xc,yc) exp(-( ((x-xc)^2)/0.5 + ((y-yc)^2)/0.5 )); 对白色圆圈内的像素进行加权,放置在蒙版的 centroid (xc,yc) 中。 xy是对应像素的坐标。您能否请某人提出一种使用 for 循环的方法?

谢谢。

【问题讨论】:

标签: matlab


【解决方案1】:

通过“加权”椭圆内的像素,我假设您的意思是按元素乘以 2D 高斯。如果是这样,这是代码:

% Read images
img = imread('img.jpg');
img = im2double(rgb2gray(img));
mask = imread('mask.jpg');
mask = im2double(rgb2gray(mask)) > 0.9; % JPG Compression resulted in some noise

% Gaussian function
g = @(x,y,xc,yc) exp(-(((x-xc).^2)/500+((y-yc).^2)./200)); % Should be modified to allow variances as parameters

% Use rp to get centroid and mask
rp_mask = regionprops(mask,'Centroid','BoundingBox','Image');

% Form coordinates
centroid = round(rp_mask.Centroid);
[coord_x coord_y] = meshgrid(ceil(rp_mask.BoundingBox(1)):ceil(rp_mask.BoundingBox(1))+rp_mask.BoundingBox(3)-1, ...
                             ceil(rp_mask.BoundingBox(2)):ceil(rp_mask.BoundingBox(2))+rp_mask.BoundingBox(4)-1);

% Get Gaussian Mask
gaussian_mask = g(coord_x,coord_y,centroid(1),centroid(2));
gaussian_mask(~rp_mask.Image) = 1; % Set values outside ROI to 1, this negates weighting outside ROI

% Apply Gaussian - Can use temp variables to make this shorter
img_g = img;
img_g(ceil(rp_mask.BoundingBox(2)):ceil(rp_mask.BoundingBox(2))+rp_mask.BoundingBox(4)-1, ...
     ceil(rp_mask.BoundingBox(1)):ceil(rp_mask.BoundingBox(1))+rp_mask.BoundingBox(3)-1) =  ...
     img(ceil(rp_mask.BoundingBox(2)):ceil(rp_mask.BoundingBox(2))+rp_mask.BoundingBox(4)-1, ...
     ceil(rp_mask.BoundingBox(1)):ceil(rp_mask.BoundingBox(1))+rp_mask.BoundingBox(3)-1) .* gaussian;

% Show
figure, imshow(img_g,[]);

结果:

如果您想在该 roi 内执行一些过滤,有一个名为 roifilt2 的函数也可以让您过滤该区域内的图像:

img_filt = roifilt2(fspecial('gaussian',[21 21],10),img,mask);
figure, imshow(img_filt,[]);

结果:

【讨论】:

  • 谢谢,我想第一个 sn-p 就是我要问的。
  • @Thoth 如果这是你要找的,你能接受答案吗?
  • 我想在接受帖子之前先玩一下代码,以防我有任何问题:)
猜你喜欢
  • 1970-01-01
  • 2011-02-15
  • 2016-01-02
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-27
  • 1970-01-01
相关资源
最近更新 更多