- Halcon的abs_image算子是計(jì)算圖像的絕對值。
OpenCvSharp中有Cv2.AbsDiff 或 Cv2.ConvertScaleAbs 等函數(shù)來計(jì)算圖像像素值的絕對值裹芝。
對于圖像的每個(gè)像素,計(jì)算其絕對值(即模數(shù))存皂,這通常用于圖像的轉(zhuǎn)換或一些基于像素差異的處理灵奖。
一卷玉、 創(chuàng)建 AbsImage 函數(shù)
- AbsImage 函數(shù)將接受一幅圖像并返回該圖像的絕對值圖像侧戴。
該函數(shù)將對圖像的每個(gè)像素計(jì)算其絕對值(無論是灰度圖像還是彩色圖像)宁昭。
using OpenCvSharp;
using System;
public class ImageProcessing
{
/// <summary>
/// 計(jì)算圖像的絕對值(模數(shù))。
/// </summary>
/// <param name="image">輸入圖像酗宋,支持灰度圖像和彩色圖像积仗。</param>
/// <returns>返回圖像的絕對值(模數(shù))圖像。</returns>
/// <exception cref="ArgumentException">如果輸入圖像為空蜕猫,拋出異常寂曹。</exception>
public static Mat AbsImage(Mat image)
{
// 檢查輸入圖像是否為空
if (image.Empty())
{
throw new ArgumentException("輸入圖像為空。");
}
// 創(chuàng)建一個(gè)空的結(jié)果圖像
Mat result = new Mat();
// 對圖像進(jìn)行絕對值轉(zhuǎn)換
// 使用 ConvertScaleAbs 可以確保每個(gè)像素值都被轉(zhuǎn)換成它的絕對值
// 對于彩色圖像回右,OpenCV 會(huì)對每個(gè)通道進(jìn)行處理
Cv2.ConvertScaleAbs(image, result);
return result;
}
}
二隆圆、函數(shù)解釋
-
AbsImage 函數(shù)參數(shù):
- image:輸入圖像,可以是灰度圖像或彩色圖像楣黍。
- 返回值:返回計(jì)算后的圖像匾灶,其中每個(gè)像素的值是其原始值的絕對值。
- 異常:
如果輸入圖像為空租漂,拋出異常。
Cv2.ConvertScaleAbs():該函數(shù)將每個(gè)像素的值轉(zhuǎn)換為它的絕對值颊糜,且如果需要哩治,它會(huì)將結(jié)果縮放并轉(zhuǎn)換為 8 位無符號整數(shù)
三、 注意事項(xiàng)
- 對于 灰度圖像衬鱼,該操作將計(jì)算每個(gè)像素值的絕對值业筏,并確保結(jié)果是一個(gè)無符號的 8 位圖像(如果原圖像是負(fù)值,結(jié)果會(huì)變成它的正數(shù))鸟赫。
- 對于 彩色圖像蒜胖,OpenCV 會(huì)對每個(gè)通道(例如 BGR 通道)分別計(jì)算每個(gè)像素值的絕對值,因此處理后的圖像仍然是一個(gè)彩色圖像抛蚤。
四台谢、資料
技能拾荒者《11-OpenCVSharp 中實(shí)現(xiàn) Halcon 的 abs_image算子(計(jì)算一個(gè)圖像的絕對值(模數(shù)))》
https://blog.csdn.net/weixin_45590420/article/details/143920695