首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >邻接木图像的对比度增强

邻接木图像的对比度增强
EN

Stack Overflow用户
提问于 2013-12-02 06:18:38
回答 1查看 7.8K关注 0票数 7

嗨,我想用邻域像素值来增强图像的对比度。

让图像被认为是u0。然后我想用公式来增强图像

这里,M1是最小值,M2是相邻像素之间u0的最大值,Mg是原始图像的最大灰度值。我做手术的邻居是9X9。uN是新生成的图像(对比度增强图像)。

我已经尝试了以下代码,但不确定我是否正确。

代码语言:javascript
复制
%Generate a contrast enhanced image
tic
clear all; close all;
I = imread('4.jpg');
I = imresize(I,[128 128]);
if size(I,3)== 3
            P = rgb2gray(uint8(I));
            P = double(P);
elseif size(I,3) == 2
            P = 0.5.*(double(I(:,:,1))+double(I(:,:,2)));
else
            P = double(I);
end
ssize=9;
mg=max(P(:));

f1 = @(x) min(x(:));
m1 = nlfilter(P,[9 9],f1);
f2 = @(x) max(x(:));
m2 = nlfilter(P,[9 9],f2);

P_op=((P-m1)./(m2-m1)).*mg;
subplot(2,1,1),imagesc(P,[0 255]);colormap(gray);axis off;
subplot(2,1,2),imagesc(P_op,[0 255]);colormap(gray);axis off;
toc

我得到的一些结果如下:

谁能检查一下,告诉我我的代码是否正确?我自己也不太确定。另外,请告诉我是否有更好的方法来做到这一点。提前谢谢各位。

编辑的问题,我重新读取工作,我**必须应用滑动窗口功能,只有少数指定像素。**

我必须应用的像素是在这个方法中找到的。检测图像的初始轮廓(以红色显示在图像上)。然后,在指定的距离上绘制轮廓周围的一个带。滑动窗口功能只能应用于原始图像窄带内的像素

我给出了图像,初始轮廓和波段图像。

白色标记的像素是,我指定的像素必须在其上应用滑动函数。nfilter可以应用于这样的标准吗?请帮帮忙。如果我的问题不正确,我会进一步澄清。

EN

回答 1

Stack Overflow用户

发布于 2014-04-16 09:16:07

我会用以下两种方法中的任一种来解决这个问题:

  1. 将过滤器应用于整个图像(使用colfilt而不是nlfilter)。 然后将结果乘以掩码。
  2. 提取所需的像素及其邻域,形成像colfilt这样的列形式,并应用过滤器。

这两种方法都能奏效。

我想对于小照片,第一张会更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20322004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档