嗨,我想使用邻域像素值来增强图像的对比度。
让图像被认为是u0。然后我想通过使用公式来增强图像
这里,M1 是邻域像素中 u0 的最小值,M2 是最大值,Mg 是原始图像的最大灰度值。我的手术所在的社区是 9X9。uN 是新生成的图像(对比度增强图像)。
我已经尝试了以下代码,但不确定我是否正确。
%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 应用于此类标准吗?请帮忙。如果我的问题不正确,我会进一步澄清。