matlab中读取图像(“pollen.jpg”),实现图像的均衡化(histeq)和规定化;

时间: 2024-01-16 22:04:11 浏览: 33
好的,下面是代码: ```matlab % 读取图像 img = imread('pollen.jpg'); % 均衡化处理 img_eq = histeq(img); % 规定化处理 ref_img = imread('reference_image.jpg'); % 参考图像 ref_img_eq = histeq(ref_img); % 参考图像均衡化 ref_hist = imhist(ref_img_eq); % 参考图像直方图 % 对原图像进行规定化处理 img_spec = histeq(img, ref_hist); % 显示图像 subplot(2,2,1), imshow(img), title('原图像'); subplot(2,2,2), imshow(img_eq), title('均衡化处理后的图像'); subplot(2,2,3), imshow(ref_img), title('参考图像'); subplot(2,2,4), imshow(img_spec), title('规定化处理后的图像'); ``` 其中,“pollen.jpg”是原图像,“reference_image.jpg”是参考图像,你需要将其替换成你自己的图像。注意,规定化处理需要先对参考图像进行均衡化处理,再计算参考图像的直方图,最后对原图像进行规定化处理。
相关问题

用matlab编写函数(function)实现图像的均衡化和规定化,以pollen.jpg为例;

好的,以下是用 MATLAB 编写的函数实现图像的均衡化和规定化的代码,以 pollen.jpg 为例: ```matlab % 定义函数 function [output1, output2] = Image_Histogram_Equalization_and_Specification(input_img, ref_img) % input_img: 待处理的图像 % ref_img: 参考图像 % 读入图像 I = imread(input_img); ref_I = imread(ref_img); % 均衡化处理 J = histeq(I); % 规定化处理 K = histeq(I, imhist(ref_I)); % 显示图像 figure; subplot(2,2,1); imshow(I); title('原始图像'); subplot(2,2,2); imhist(I); title('原始图像直方图'); subplot(2,2,3); imshow(J); title('均衡化后的图像'); subplot(2,2,4); imhist(J); title('均衡化后的直方图'); figure; subplot(2,2,1); imshow(I); title('原始图像'); subplot(2,2,2); imhist(I); title('原始图像直方图'); subplot(2,2,3); imshow(K); title('规定化后的图像'); subplot(2,2,4); imhist(K); title('规定化后的直方图'); % 输出结果 output1 = J; output2 = K; end ``` 使用方法: 1. 将上述代码保存为 `Image_Histogram_Equalization_and_Specification.m` 文件。 2. 在 MATLAB 命令窗口中输入 `Image_Histogram_Equalization_and_Specification('pollen.jpg', 'ref_img.jpg')`,其中 `'pollen.jpg'` 为待处理的图像,`'ref_img.jpg'` 为参考图像。 3. 程序会输出处理后的图像和直方图,并返回处理后的图像矩阵。

Step1: 读取图像“pout.tif”,计算并显示图像直方图,利用直接灰度变换法对图像进行灰度变换,实现(1)图像明暗转换(负片图像);(2)将0.3到0.7的灰度级扩展到范围[0 1]。(需要用到的命令为imhist, imadjust); Step2: 读取二进制灰度图像“lab3step2”(图像尺寸是300*400),图像数据类型为“float32”,编码格式为大型机,实现(1)尝试通过线性变换实现灰度范围转换,使其灰度值在[0 255];(2)分别用线性变换,对数变换和指数变换显示图像,并选取合适的参数显示图像(自己认为合适的); Step3:读入并显示彩色图像lena.jpg,实现(1)拆分这幅图像,并分别显示其R,G,B分量;(2)拆分这幅图像,并分别显示其H,S,V分量;(使用RGB2HSV);(3)把该图转化为灰度图显示(rgb2gray); Step4:分别读入二进制文件lab3step4r,lab3step4g, lab3step4b,图像的尺寸是(435*580), 图像数据类型为‘uint8’, 实现(1)合并RGB三个通道显示这幅图;(2)显示这幅图像的R,G,B三分量的直方图,分别进行直方图均衡处理,然后再合并显示图像;(3)将图像转换为H,S,V三分量并分别显示该三分量,然后对V分量进行直方图均衡化,然后重新显示新的图像; Step5:读取图像(“pollen.jpg”),实现图像的均衡化(histeq)和规定化;

Step1: ``` % 读取图像pout.tif img = imread('pout.tif'); % 计算并显示图像直方图 figure; imhist(img); % 图像明暗转换 neg_img = imcomplement(img); figure; imshow(neg_img); % 将0.3到0.7的灰度级扩展到范围[0 1] adj_img = imadjust(img, [0.3 0.7], [0 1]); figure; imshow(adj_img); ``` Step2: ``` % 读取二进制灰度图像lab3step2 fid = fopen('lab3step2', 'r', 'b'); img = fread(fid, [400 300], 'float32'); fclose(fid); % 尝试通过线性变换实现灰度范围转换,使其灰度值在[0 255] lin_img = (img - min(img(:))) / (max(img(:)) - min(img(:))) * 255; figure; imshow(lin_img, []); % 线性变换 lin_img = (img - min(img(:))) / (max(img(:)) - min(img(:))) * 255; figure; imshow(lin_img, []); % 对数变换 log_img = log(1 + img) / log(1 + max(img(:))); figure; imshow(log_img, []); % 指数变换 exp_img = 2 .^ (img / max(img(:))) - 1; figure; imshow(exp_img, []); ``` Step3: ``` % 读入并显示彩色图像lena.jpg img = imread('lena.jpg'); figure; imshow(img); % 拆分这幅图像,并分别显示其R,G,B分量 r = img(:, :, 1); g = img(:, :, 2); b = img(:, :, 3); figure; subplot(1, 3, 1); imshow(r); title('R'); subplot(1, 3, 2); imshow(g); title('G'); subplot(1, 3, 3); imshow(b); title('B'); % 拆分这幅图像,并分别显示其H,S,V分量 hsv_img = rgb2hsv(img); h = hsv_img(:, :, 1); s = hsv_img(:, :, 2); v = hsv_img(:, :, 3); figure; subplot(1, 3, 1); imshow(h); title('H'); subplot(1, 3, 2); imshow(s); title('S'); subplot(1, 3, 3); imshow(v); title('V'); % 把该图转化为灰度图显示 gray_img = rgb2gray(img); figure; imshow(gray_img); ``` Step4: ``` % 分别读入三个二进制文件 r_fid = fopen('lab3step4r', 'r'); r = fread(r_fid, [580 435], 'uint8'); fclose(r_fid); g_fid = fopen('lab3step4g', 'r'); g = fread(g_fid, [580 435], 'uint8'); fclose(g_fid); b_fid = fopen('lab3step4b', 'r'); b = fread(b_fid, [580 435], 'uint8'); fclose(b_fid); % 合并RGB三个通道显示这幅图 rgb_img = cat(3, r', g', b'); figure; imshow(rgb_img); % 显示这幅图像的R,G,B三分量的直方图 figure; subplot(1, 3, 1); imhist(r); title('R'); subplot(1, 3, 2); imhist(g); title('G'); subplot(1, 3, 3); imhist(b); title('B'); % 分别进行直方图均衡处理,然后再合并显示图像 r_eq = histeq(r); g_eq = histeq(g); b_eq = histeq(b); eq_img = cat(3, r_eq', g_eq', b_eq'); figure; imshow(eq_img); % 将图像转换为H,S,V三分量并分别显示该三分量 hsv_img = rgb2hsv(rgb_img); h = hsv_img(:, :, 1); s = hsv_img(:, :, 2); v = hsv_img(:, :, 3); figure; subplot(1, 3, 1); imshow(h); title('H'); subplot(1, 3, 2); imshow(s); title('S'); subplot(1, 3, 3); imshow(v); title('V'); % 对V分量进行直方图均衡化,然后重新显示新的图像 v_eq = histeq(v); eq_hsv_img = cat(3, h, s, v_eq); eq_rgb_img = hsv2rgb(eq_hsv_img); figure; imshow(eq_rgb_img); ``` Step5: ``` % 读取图像pollen.jpg img = imread('pollen.jpg'); % 图像的均衡化 eq_img = histeq(img); figure; imshow(eq_img); % 图像的规定化 ref_img = imread('ref_img.jpg'); ref_img = rgb2gray(ref_img); eq_img = histeq(img, imhist(ref_img)); figure; imshow(eq_img); ```

相关推荐

最新推荐

recommend-type

HP-Socket编译-Linux

HP-Socket编译-Linux
recommend-type

JavaScript_生活在Discord上的开源社区列表.zip

JavaScript
recommend-type

JavaScript_MultiOn API.zip

JavaScript
recommend-type

JavaScript_简单和完整的React DOM测试工具,鼓励良好的测试实践.zip

JavaScript
recommend-type

JavaScript_成为一个Nodejs开发者.zip

JavaScript
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。