matlab直方图匹配代码
时间: 2023-10-19 10:07:03 浏览: 259
这是一个用MATLAB进行直方图匹配的代码。首先,代码使用imread函数读取原始图像和参考图像。然后,通过使用imhist函数计算原始图像和参考图像的直方图。接下来,代码计算原始图像和参考图像的累积分布函数(CDF)。然后,对于原始图像的每个像素值,代码找到与其CDF最接近的参考图像的像素值,并将其映射到新的图像中。最后,代码显示原始图像、参考图像和匹配后的图像,以及它们的直方图。
MATLAB直方图匹配代码如下:
```matlab
im = imread('original.bmp');
imRef = imread('reference.jpg');
hist = imhist(im);
histRef = imhist(imRef);
cdf = cumsum(hist) / numel(im);
cdfRef = cumsum(histRef) / numel(imRef);
M = zeros(1,256);
for idx = 1 : 256
[tmp,ind] = min(abs(cdf(idx) - cdfRef));
M(idx) = ind-1;
end
imMatch = M(double(im) + 1);
figure;
subplot(1,3,1),imshow(im,[]);title('原图像');
subplot(1,3,2),imshow(imRef,[]);title('匹配图像');
subplot(1,3,3),imshow(imMatch,[]);title('匹配之后图像');
figure;
subplot(3,1,1),imhist(im,64);title('原图像直方图');
subplot(3,1,2),imhist(imRef,64);title('匹配图像直方图');
subplot(3,,3),imhist(uint8(imMatch),64);title('匹配之后图像直方图');
```
希望对你有所帮助!
阅读全文