MATLAB图像处理

您所在的位置:网站首页 鲁姆苏丹国首都 MATLAB图像处理

MATLAB图像处理

2023-09-19 13:02| 来源: 网络整理| 查看: 265

为了保证色彩的不失真,所以把RGB图像(后缀通常为.jpg .png等),转为HSV进行处理,对其中的亮度S进行操作,先进行直方图均衡化,后进行高斯-拉普拉斯滤波器的锐化处理,进行改进亮度。

锐化处理可以用空间微分来完成. 微分算子的响应强度与图像在该点的突变程度有关,图像微分增强了边缘和其他突变(如噪声)而消弱了灰度变化缓慢的区域.。

代码如下: 其中的直方图均衡化函数可以参考:直方图均衡化

img = imread(''); figure; imshow(img); title('原图') %转hsv img_hsv = rgb2hsv(img); %提取亮度 img_v = img_hsv( :,:,3); %先进行直方图均衡化处理 img_hist = hist_1(img_v); %再进行锐化处理 % w = fspecial('laplacian', 0.8);%生成拉普拉斯滤波器 w = fspecial('log', [5 5], 0.4);%生成高斯-拉普拉斯滤波器 img_ruihua = filter(img_hist, w, 5); img_hsv(:,:,3) = img_ruihua; img_after = hsv2rgb(img_hsv); figure; imshow(img_after); title('处理后') %% %锐化函数 function img_result = filter(img_v, w, muban_size) moban_size = muban_size; [M, N] = size(img_v); img_lap = zeros(M, N); expand_img = double(wextend('2D','zpd', img_v, floor(moban_size/2)));%扩展0,转double为了矩阵运算 for i=1:M for j=1:N ave = sum( sum( expand_img(i:i+moban_size-1,j:j+moban_size-1) .* w)); %取出扩展元素与模板相乘,并求矩阵元素之和 img_lap(i,j) = ave; end end img_result = img_v - img_lap; end %% %直方图均衡化函数 function hist_img = hist_1(I) I = floor(I.*255); [M, N] = size(I); size_img = M*N; c = zeros(1,256);%统计每个每个像素值的个数 b= c;%转化前后的对照表 temp = I(:); temp = sort(temp); for i = 1:size_img c(temp(i)+1) = c(temp(i)+1)+1; end a = c;%求和 for i = 2:256 a(i) = c(i) + a(i-1); end min_cdf = 10000; for i = 1:256 if a(i)>0 if a(i) < min_cdf min_cdf = a(i); end end end for j = 1:256 if a(j) > 0 b(j) = round(255*(a(j)-min_cdf)/(size_img-min_cdf)); end end for i = 1:M for j = 1:N I(i,j) = b(I(i,j)+1); end end hist_img = I./255; end

首先对夜景照片进行试验: 夜景 可以看到对夜景照片的暗部增强明显,但是天空会有些过曝。

再对雾天照片进行试验: 雾天 整体的亮度有了一些增强,有部分去雾功能,但是不是很完美。

对于暗光下的人像处理试验: 人像 对于人像效果较好,脸部亮度提升明显,细节增强明显。

代码肯定还有很多不完善的地方,欢迎批评指正。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3