RGB边缘检测

%导入要检测的图像
f = imread('flower.tif');

%使用函数colorgrad
[VG,A,PPG] = colorgrad(f);

%使用子图像进行显示
subplot(2,2,1),imshow(f);

%显示VG分量(RGB向量梯度)
subplot(2,2,2),imshow(VG);

%显示PPG分量(单独彩色平面的2D梯度之和形成的梯度图像)
subplot(2,2,3),imshow(PPG);

%VG和PPG分量的绝对差
f1 = abs(VG) - abs(PPG);
subplot(2,2,4),imshow(f1);

得到的图像如下所示:

 由于子图像4不能清楚看清,因此用icc函数来进行调整,来进行论证:

%求差和用icc函数
f1 = abs(VG) - abs(PPG);
g = ice('image',f1,'wait','off');

上图的子图像4的强化显示如下所示:

 若这对您有帮助的话,请您点个小赞吧,您的支持是我不断分享的源动力。非常感谢

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
下面是使用Python实现计算RGB图像的彩色梯度,并对直方图均衡化后的图像进行RGB边缘检测并保存输出的代码: ```python import cv2 import numpy as np def color_gradient(img): # 计算RGB三个通道的梯度 dx_r = cv2.Sobel(img[:, :, 0], cv2.CV_64F, 1, 0, ksize=3) dy_r = cv2.Sobel(img[:, :, 0], cv2.CV_64F, 0, 1, ksize=3) dx_g = cv2.Sobel(img[:, :, 1], cv2.CV_64F, 1, 0, ksize=3) dy_g = cv2.Sobel(img[:, :, 1], cv2.CV_64F, 0, 1, ksize=3) dx_b = cv2.Sobel(img[:, :, 2], cv2.CV_64F, 1, 0, ksize=3) dy_b = cv2.Sobel(img[:, :, 2], cv2.CV_64F, 0, 1, ksize=3) # 计算RGB三个通道的梯度幅值 mag_r = cv2.magnitude(dx_r, dy_r) mag_g = cv2.magnitude(dx_g, dy_g) mag_b = cv2.magnitude(dx_b, dy_b) # 将RGB三个通道的梯度幅值合并 mag = cv2.merge([mag_r, mag_g, mag_b]) return mag # 读取图像并进行直方图均衡化 img = cv2.imread('test.jpg') img_eq = cv2.equalizeHist(img) # 计算彩色梯度 grad = color_gradient(img_eq) # 进行阈值处理得到边缘图像 gray = cv2.cvtColor(grad, cv2.COLOR_BGR2GRAY) _, thresh = cv2.threshold(gray, 50, 255, cv2.THRESH_BINARY) # 保存输出 cv2.imwrite('edge_detection.jpg', thresh) ``` 其中`color_gradient()`函数用于计算RGB图像的彩色梯度,输入为RGB图像,输出为彩色梯度图像。`cv2.Sobel()`函数用于计算Sobel算子,`cv2.magnitude()`函数用于计算梯度幅值,`cv2.merge()`函数用于将三个通道的梯度幅值合并。在主函数中,首先读取图像并进行直方图均衡化,然后调用`color_gradient()`函数计算彩色梯度。接着将彩色梯度图像转换为灰度图像,并进行阈值处理得到边缘图像。最后使用`cv2.imwrite()`函数保存输出边缘图像。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值