16位图像matlab直方图均衡化

简介: 如果,如果你要做的是8位图直方图均衡化,别看了。前方左转查查histeq怎么用,挺简单的。本文主要实现了一下16位的raw图像直方图均衡化。本人博客,csdn搬运过来

前言

如果,如果你要做的是8位图直方图均衡化,别看了。前方左转查查histeq怎么用,挺简单的,另我个新手上路,不会用matlab,所以在这里记录下histeq怎么用,不看往下翻。

8位图 histeq函数

8位tif灰度图像图像

灰度图就很方便了,I是读取到的数组,用histeq将I做均衡化,用I1存储生成的数组,用figure显示出来

I = imread(‘xxx.tif’);
I1 = histeq(I);
figure,imshow(I1,[])
AI 代码解读

好的这里如果要存储的话,反正是8位的图像嘛,这里就直接用

imwrite(I1,'m.jpeg')
AI 代码解读

就可以了

8位bmp rgb图像

好的如果是8位的或者不知道多少位的bmp rgb图像的话,如果只是追求这个函数可以使用,那么,可以试试我这个方案

 F=imread('D:\Project\直方图均衡\Pic\1.bmp');
 F1=rgb2gray(F);
 F2 = histeq(F1);
 figure,imshow(F2,[])
AI 代码解读

其他操作同上

16位 raw文件读取

怎么读取找了半天,不重开一个文章了都记录在这吧
下面两行代码,把从fid读取到的数据存放到b这个数组里,[300,200]是文件大小,注,第一个参数一定要对,第二个无所谓。‘int16’是数据格式,8位的话就int8

fid=fopen('D:\Project\直方图均衡\Pic\0.Raw', 'r');
[b,count]=fread(fid,[300,200],'int16');
AI 代码解读

好的,另外你应该知道那个‘’单引号内部的是图像路径吧? 还有就是matlab左边的那个路径在的地方,被matlab视为根位置,对放在这个地方的文件不用前面的那一堆,可以直接写文件名,懂吧?

16位图 代码

不知道matlab代码怎么插入,用的lua脚本的格式凑合着看吧

function [img2] = a(img)
    img1 = double(img);
    [r,c] = size(img1);%获取图像的高r和宽c
    %统计图像中每个灰度级i出现的次数存到count(1,i)里
    count = zeros(1,65536);
    for i=1:r
        for j=1:c
            count(1,img(i,j)+1) = count(1,img(i,j)+1)+1;
        end
    end
    %统计图像中每个灰度级i出现的概率,存储到p(1,i)里
    p = zeros(1,65536);
    for i=1:65536
        p(1,i) = count(1,i)/(r*c);
    end
    img2 = im2uint8(ones(r,c));%创建一个r * c大小的1矩阵
    
    func_T = zeros(1,65536);%变换映射存储
    p_sum = 0;
    %求直方图均衡化的变换函数
    for k = 1:65536
        p_sum = p_sum + p(k);%求每个灰度级的概率之和
        func_T(k) = 255*p_sum;%根据变换函数的公式求每一点k对应的映射值
    end
    
    func_T_z =  round(func_T);%对变换函数进行取整,round 为四舍五入取整
    %完成每个像素点的映射
    for i = 0:255
        findi = find(func_T_z==i);%找到灰度级为i的概率和
        len = length(findi);
        for j=1:len
            findj = find(img==(findi(j)-1));%进行对应每个像素点的映射
            img2(findj) = i;
        end
    end
end
AI 代码解读

不确定有没有bug,觉得有问题的千万指出....把这个保存成a.mat文件放在matlab目录里,就可以直接调用啦,传入数组是刚从raw里读出来的b。

参考:

matlab实现 图像的直方图均衡化处理 直方图均衡化 代码

目录
打赏
0
0
0
0
19
分享
相关文章
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。
基于信息论的高动态范围图像评价算法matlab仿真
本项目基于信息论开发了一种高动态范围(HDR)图像评价算法,并通过MATLAB 2022A进行仿真。该算法利用自然图像的概率模型,研究图像熵与成像动态范围的关系,提出了理想成像动态范围的计算公式。核心程序实现了图像裁剪处理、熵计算等功能,展示了图像熵与动态范围之间的关系。测试结果显示,在[μ-3σ, μ+3σ]区间内图像熵趋于稳定,表明系统动态范围足以对景物成像。此外,还探讨了HDR图像亮度和对比度对图像质量的影响,为HDR图像评价提供了理论基础。
基于一阶梯度的图像亚像素位移matlab仿真,带GUI界面
本项目提供图像亚像素位移估计算法,使用Matlab2022a开发。完整程序无水印运行效果佳,附带详细中文注释代码和操作视频。该算法通过一阶梯度信息和泰勒级数展开,实现比像素更精细的位置变化测量,广泛应用于医学影像、遥感图像、视频监控、精密测量等领域,显著提升图像配准和分析精度。
基于Affine-Sift算法的图像配准matlab仿真
本项目展示了Affine-SIFT算法的运行效果(无水印),适用于图像配准任务,能够处理旋转、缩放、平移及仿射变换。程序基于MATLAB2022A开发,包含完整代码与操作视频。核心步骤为:先用SIFT提取特征点,再通过仿射变换实现高精度对准。
基于图像形态学处理的移动物体目标跟踪和质心提取matlab仿真,带GUI界面
本项目展示了一种基于图像形态学处理的移动物体目标跟踪和质心提取算法。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释及操作视频。算法通过多帧图像像素值求平均、中值法或高斯混合模型估计背景,结合形态学处理(开闭运算、阈值处理)去除噪声并优化目标检测,提高准确性。颜色直方图匹配用于目标跟踪,结构元素膨胀操作扩大搜索范围,增强鲁棒性。
基于图像形态学处理和凸包分析法的指尖检测matlab仿真
本项目基于Matlab2022a实现手势识别中的指尖检测算法。测试样本展示无水印运行效果,完整代码含中文注释及操作视频。算法通过图像形态学处理和凸包检测(如Graham扫描法)来确定指尖位置,但对背景复杂度敏感,需调整参数PARA1和PARA2以优化不同手型的检测精度。
织物图像的配准和拼接算法的MATLAB仿真,对比SIFT,SURF以及KAZE
本项目展示了织物瑕疵检测中的图像拼接技术,使用SIFT、SURF和KAZE三种算法。通过MATLAB2022a实现图像匹配、配准和拼接,最终检测并分类织物瑕疵。SIFT算法在不同尺度和旋转下保持不变性;SURF算法提高速度并保持鲁棒性;KAZE算法使用非线性扩散滤波器构建尺度空间,提供更先进的特征描述。展示视频无水印,代码含注释及操作步骤。
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
基于粒子群优化的图像融合算法matlab仿真
这是一个基于粒子群优化(PSO)的图像融合算法,旨在将彩色模糊图像与清晰灰度图像融合成彩色清晰图像。在MATLAB2022a中测试,算法通过PSO求解最优融合权值参数,经过多次迭代更新粒子速度和位置,以优化融合效果。核心代码展示了PSO的迭代过程及融合策略。最终,使用加权平均法融合图像,其中权重由PSO计算得出。该算法体现了PSO在图像融合领域的高效性和融合质量。

热门文章

最新文章