资讯专栏INFORMATION COLUMN

OpenCV.阈值截断

leiyi / 2671人阅读

摘要:阈值截断阈值截断即为大于阈值的就返回阈值,小于阈值的则返回原值。可作到削去峰点并维持原样本的作用。表示最大灰度值,一般为。表示要使用的阈值类型的整数类型变量,阈值截断为。

阈值截断

阈值截断即为大于阈值的就返回阈值,小于阈值的则返回原值。可作到削去峰点并维持原样本的作用。在OpenCV中该类的实现依赖于threshold() 函数。下面是该函数的声明:

threshold(src, dst, thresh, maxval, type);

各参数解释

  • src
    表示此操作的源(输入图像)的Mat对象。

  • mat
    表示目标(输出)图像的类Mat的对象。

  • thresh
    表示阈值T。

  • maxval
    表示最大灰度值,一般为255。

  • type
    表示要使用的阈值类型的整数类型变量,阈值截断为mgproc.THRESH_TRUNC

其数学描述解释如下:

  • 对于给定的src(x,y),若其像素值大于阈值T(thresh),则其返回像素最大值,否则为0。

  • 那么dst其像素描述如下:

Java代码(JavaFX Controller层)

public class Controller{    @FXML private Text fxText;    @FXML private ImageView imageView;    @FXML private Label resultLabel;    @FXML public void handleButtonEvent(ActionEvent actionEvent) throws IOException {        Node source = (Node) actionEvent.getSource();        Window theStage = source.getScene().getWindow();        FileChooser fileChooser = new FileChooser();        FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.png");        fileChooser.getExtensionFilters().add(extFilter);        fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JPG Files(*.jpg)", "*.jpg"));        File file = fileChooser.showOpenDialog(theStage);        runInSubThread(file.getPath());    }    private void runInSubThread(String filePath){        new Thread(new Runnable() {            @Override            public void run() {                try {                    WritableImage writableImage = thresholdOfTruncation(filePath);                    Platform.runLater(new Runnable() {                        @Override                        public void run() {                            imageView.setImage(writableImage);                        }                    });                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }        private WritableImage thresholdOfTruncation(String filePath) throws IOException {        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);        Mat src = Imgcodecs.imread(filePath);        Mat dst = new Mat();        Imgproc.threshold(src, dst, 80, 255, Imgproc.THRESH_TRUNC);        MatOfByte matOfByte = new MatOfByte();        Imgcodecs.imencode(".jpg", dst, matOfByte);        byte[] bytes = matOfByte.toArray();        InputStream in = new ByteArrayInputStream(bytes);        BufferedImage bufImage = ImageIO.read(in);        WritableImage writableImage = SwingFXUtils.toFXImage(bufImage, null);        return writableImage;    }}

运行图

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/123925.html

相关文章

  • OpenCV-自适应阈值函数cv::adaptiveThreshold

    摘要:类型的,输出图像。类型的,自适应阈值算法类型。为均值法获取阈值,为高斯窗加权和获取阈值。类型的,窗口的大小,只能为奇数。类型的,自适应阈值算法得到平均值或加权平均值后,再减的常数值。 作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 函数...

    fuchenxuan 评论0 收藏0
  • 备份笔记

    摘要:步骤高斯平滑去噪计算梯度强度及方向非极大抑制在每一点上,首先将梯度近似为四个方向,然后将领域中心与沿着其对应的梯度方向的两个像素相比,若中心像素为最大值,则保留,否则中心置,这样可以抑制非极大值,保留局部梯度最大的点,以得到细化的边缘。 ...

    jsyzchen 评论0 收藏0
  • OpenCV-Python实战(9)——OpenCV用于图像分割的阈值技术(含大量示例,建议收藏)

    摘要:阈值类型公式如下其表示,如果像素的强度高于,则目标图像像素值将设置为否则,设置为。组合后,阈值处理函数将只能处理单通道图像,且计算并返回最佳阈值,而非指定阈值。 ...

    suxier 评论0 收藏0
  • OpenCV基础(11)基于OpenCV的边缘检测

    摘要:对图像进行两个方向的梯度,将原始图像提取为边缘结构表示,使其结构完整性保持不变。边缘检测边缘检测是应用最广泛的边缘检测算法之一。在性能方面,边缘检测得到了最好的结果,因为它不仅使用了边缘检测,而且还使用了非最大抑制和迟滞阈值。 ...

    RobinQu 评论0 收藏0
  • opencv python 图像二值化/简单阈值化/大津阈值

    摘要:对于非双峰图像,二值化不准确。如果未使用阈值法,则与之前使用的阈值相同在第一种情况下,将全局阈值应用为值在第二种情况下,直接应用了的阈值在第三种情况下,使用高斯内核过滤图像以消除噪声,然后应用阈值处理代码 Image Thresholding 1简单的阈值化 cv2.threshold第一个参数是源图像,它应该是灰度图像. 第二个参数是用于对像素值进行分类的阈值, 第三个参数是max...

    luoyibu 评论0 收藏0

发表评论

0条评论

leiyi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<