如何计算图像的渐变
How to calculate the gradients of an image?
以下代码允许使用OpenCV中可用的Sobel运算符计算图像的梯度。
IplImage* grad_x = cvCreateImage(cvGetSize(image),IPL_DEPTH_32F,1);
IplImage* grad_y = cvCreateImage(cvGetSize(image),IPL_DEPTH_32F,1);
cvSobel(image,grad_x,1,0,3);
cvSobel(image,grad_y,0,1,3);
cvSobel()
函数如何处理边缘?这个
borderType
选项,但是,我不知道这些选项中哪个更好。
此外,在计算图像梯度之前执行平滑过滤器有什么优势?
最后,在计算出图像的梯度后,如何计算相应的角度和幅度?
如果你对边缘映射感兴趣,你应该考虑OpenCV中的Canny方法。 Sobel
将返回一个渐变图像,然后你可以通过使用阈值的简单阈值从中派生边缘图,或者你可以做一些更复杂的事情,如Canny
方法。
平滑图像(例如,通过高斯模糊或模糊)将减少Sobel
操作导致的放大噪声水平。
我在这里有一个非常相似的答案,它显示了如何确定梯度的大小和相位。
希望对您有所帮助!
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 为什么 BMP 图像上的 imwrite 会卡住/不返回?
- Gstreamer:每 5 秒使用多文件墨水保存图像/jpeg
- 如何使用CImg打开图像?
- 用c++快速制作渐变图像
- 如何计算图像的渐变