matlab做直方图均衡,下面的程序是局部直方图均衡,程序运行后的图像显示如下图,黑色部分灰度值均为1局部直方图均衡方法步骤:首先定义一个大小合适的移动子图块,然后在以每个像素点为
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 03:51:48
![matlab做直方图均衡,下面的程序是局部直方图均衡,程序运行后的图像显示如下图,黑色部分灰度值均为1局部直方图均衡方法步骤:首先定义一个大小合适的移动子图块,然后在以每个像素点为](/uploads/image/z/2339728-16-8.jpg?t=matlab%E5%81%9A%E7%9B%B4%E6%96%B9%E5%9B%BE%E5%9D%87%E8%A1%A1%2C%E4%B8%8B%E9%9D%A2%E7%9A%84%E7%A8%8B%E5%BA%8F%E6%98%AF%E5%B1%80%E9%83%A8%E7%9B%B4%E6%96%B9%E5%9B%BE%E5%9D%87%E8%A1%A1%2C%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C%E5%90%8E%E7%9A%84%E5%9B%BE%E5%83%8F%E6%98%BE%E7%A4%BA%E5%A6%82%E4%B8%8B%E5%9B%BE%2C%E9%BB%91%E8%89%B2%E9%83%A8%E5%88%86%E7%81%B0%E5%BA%A6%E5%80%BC%E5%9D%87%E4%B8%BA1%E5%B1%80%E9%83%A8%E7%9B%B4%E6%96%B9%E5%9B%BE%E5%9D%87%E8%A1%A1%E6%96%B9%E6%B3%95%E6%AD%A5%E9%AA%A4%EF%BC%9A%E9%A6%96%E5%85%88%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E5%A4%A7%E5%B0%8F%E5%90%88%E9%80%82%E7%9A%84%E7%A7%BB%E5%8A%A8%E5%AD%90%E5%9B%BE%E5%9D%97%2C%E7%84%B6%E5%90%8E%E5%9C%A8%E4%BB%A5%E6%AF%8F%E4%B8%AA%E5%83%8F%E7%B4%A0%E7%82%B9%E4%B8%BA)
matlab做直方图均衡,下面的程序是局部直方图均衡,程序运行后的图像显示如下图,黑色部分灰度值均为1局部直方图均衡方法步骤:首先定义一个大小合适的移动子图块,然后在以每个像素点为
matlab做直方图均衡,下面的程序是局部直方图均衡,程序运行后的图像显示如下图,黑色部分灰度值均为1
局部直方图均衡方法步骤:首先定义一个大小合适的移动子图块,然后在以每个像素点为中心的子图块上进行直方图均衡化,并将处理结果代替相应子块中心点的灰度值
clear;
close all;
c=imread('lena.bmp'); %读取图像
figure,imshow(c),title('原始图象'); %显示原始图象
n=15;
a(1:n,1:n)=1; %a即n×n模板,元素全是1
%输入图像是p×q的,且p>n,q>n
x1=double(c);
x2=x1;
%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素
for i=1:512-n+1
for j=1:512-n+1
m=x1(i:i+(n-1),j:j+(n-1)).*a(1:n,1:n); %取出x1中从(i,j)开始的n行n列元素与模板相乘
k=histeq(m);%对块图进行直方图均衡
x3=double(k);
x2(i,j)=x3(8,8); %将均衡后中心点的像素值赋给原图对应点的元素
end
end
%未被赋值的元素取原值
d=uint8(x2);
figure,imshow(d),title('均衡后的图像'); %显示均衡后的图象
应该如何修改,请高手指教
matlab做直方图均衡,下面的程序是局部直方图均衡,程序运行后的图像显示如下图,黑色部分灰度值均为1局部直方图均衡方法步骤:首先定义一个大小合适的移动子图块,然后在以每个像素点为
数据类型问题,histeq函数,当你的图像是double型时,返回值是0或者1;当你的图像是uint8型时,返回值为0-255.
所以你编的代码里的:k=histeq(m);%对块图进行直方图均衡,m为double型,所以其k就是全1,那么x2中对应的位置也就是全1,最后显示转化成uint8显示肯定为黑色.
所以把k=histeq(m);改成k=histeq(uint8(m));即可.运行结果如图