若要正常显示出局部自适应直方图均衡化的图像,这段代码应如何修改
时间: 2024-02-12 22:09:54 浏览: 19
你可以将adapthisteq函数的输出图像转换为uint8类型,然后再使用imshow函数进行显示。具体修改方法如下:
```matlab
hist_img2 = adapthisteq(img);
hist_img2 = uint8(hist_img2 * 255); % 将图像转换为uint8类型
figure,imhist(hist_img2);ylim('auto');
figure,imshow(hist_img2);title('局部自适应直方图均衡化-CLAHE');
```
这样就可以正常显示出CLAHE后的图像了。
相关问题
若要让这段代码又能显示原始图像、灰度直方图、全局直方图均衡化的图像和局部自适应直方图的图像该如何修改
你可以将所有的图像显示操作都放在一个for循环中,依次显示原始图像、全局直方图均衡化的图像、灰度直方图和局部自适应直方图均衡化的图像。具体代码如下:
```matlab
clc;
close all;
clear all;
Level = 256;
[name,filepath]=uigetfile('*.bmp','读入ISAR像');
filename=[filepath,name];
img = imread(filename);
figure;
for i = 1 : 4
switch i
case 1
subplot(2,2,i);
imshow(img);
title('原始图像');
case 2
hist_img1= histeq(img, Level);
subplot(2,2,i);
imshow(hist_img1);
title('全局直方图均衡化-GHE');
case 3
hist_img2 = adapthisteq(img);
hist_img2 = uint8(hist_img2 * 255);
subplot(2,2,i);
imhist(hist_img1);
ylim('auto');
title('灰度直方图');
case 4
subplot(2,2,i);
imshow(hist_img2);
title('局部自适应直方图均衡化-CLAHE');
end
end
```
这样就能够顺序显示所有的图像了。
批量自适应直方图均衡化图像增强matlab
以下是批量自适应直方图均衡化图像增强的matlab代码:
```matlab
% 批量读取所有图片
fileList = dir('*.jpg');
numFiles = length(fileList);
for i = 1:numFiles
% 读取图片
img = imread(fileList(i).name);
% 进行自适应直方图均衡化增强
img_eq = adapthisteq(img);
% 显示原图和增强后的图像
subplot(1,2,1);
imshow(img);
title('Original Image');
subplot(1,2,2);
imshow(img_eq);
title('Enhanced Image');
% 保存增强后的图像
imwrite(img_eq, ['enhanced_' fileList(i).name]);
end
```
这段代码假定所有要增强的图像都在当前目录下,并且以.jpg格式保存。代码首先使用dir函数获取当前目录下所有以.jpg结尾的文件,然后使用一个循环依次读取每个文件。对于每个文件,调用adapthisteq函数进行自适应直方图均衡化增强,并使用subplot函数显示原图和增强后的图像。最后,使用imwrite函数将增强后的图像保存到磁盘上。