#include<iostream>#include<opencv2\opencv.hpp>
using namespace std;
using namespace cv;//图像反转voidimginsert(){
Mat img =imread("Fig0304(a)(breast_digital_Xray).tif",0);imshow("原图像",img);for(int i =0;i<img.rows;i++)for(int j =0;j<img.cols;j++)
img.at<uchar>(i,j)=255-img.at<uchar>(i,j);imshow("图像反转",img);}//图像对数变换voidimglogtrans(){
Mat img =imread("Fig0305(a)(DFT_no_log).tif",0);imshow("原图像",img);for(int i =0;i<img.rows;i++)for(int j =0;j<img.cols;j++)
img.at<uchar>(i,j)=20*cv::log((double)(1+img.at<uchar>(i,j)));imshow("图像对数变换",img);}//幂律变换(伽马变换)voidimggammatrans(){
Mat img =imread("Fig0307(a)(intensity_ramp).tif",0);imshow("原图像",img);for(int i =0;i<img.rows;i++)for(int j =0;j<img.cols;j++)
img.at<uchar>(i,j)=3*cv::pow((double)img.at<uchar>(i,j),0.7);imshow("图像对数变换",img);}//对比度拉伸voidimgContrastTrans(){
Mat img =imread("Fig0310(b)(washed_out_pollen_image).tif",0);imshow("原图像",img);for(int i =0;i<img.rows;i++)for(int j =0;j<img.cols;j++){int gray_value = img.at<uchar>(i,j);if(gray_value >=125)
img.at<uchar>(i,j)=255;else
img.at<uchar>(i,j)=0;}imshow("图像对比度拉伸(其实是二值化)",img);}//比特平面分层voidimgbitecut(){
Mat img =imread("Fig0115(b)(100-dollars).tif",0);
Mat bit0(img.rows,img.cols, CV_8UC1,Scalar(0));
Mat bit1(img.rows,img.cols, CV_8UC1,Scalar(0));
Mat bit2(img.rows,img.cols, CV_8UC1,Scalar(0));
Mat bit3(img.rows,img.cols, CV_8UC1,Scalar(0));
Mat bit4(img.rows,img.cols, CV_8UC1,Scalar(0));
Mat bit5(img.rows,img.cols, CV_8UC1,Scalar(0));
Mat bit6(img.rows,img.cols, CV_8UC1,Scalar(0));
Mat bit7(img.rows,img.cols, CV_8UC1,Scalar(0));imshow("原图像",img);for(int i =0;i<img.rows;i++)for(int j =0;j<img.cols;j++){int gray_value = img.at<uchar>(i,j);if(gray_value >127)
bit7.at<uchar>(i,j)=255;elseif(gray_value%128>=64)
bit6.at<uchar>(i,j)=255;elseif(gray_value%64>=32)
bit5.at<uchar>(i,j)=255;elseif(gray_value%32>=16)
bit4.at<uchar>(i,j)=255;elseif(gray_value%16>=8)
bit3.at<uchar>(i,j)=255;elseif(gray_value%8>=4)
bit2.at<uchar>(i,j)=255;elseif(gray_value%4>=2)
bit1.at<uchar>(i,j)=255;elseif(gray_value%2>=1)
bit0.at<uchar>(i,j)=255;}imshow("7",bit7);imshow("6",bit6);imshow("5",bit5);imshow("4",bit4);imshow("3",bit3);imshow("2",bit2);imshow("1",bit1);imshow("0",bit0);}voidmain(){//imginsert();//imglogtrans();//imggammatrans();//imgContrastTrans();imgbitecut();waitKey(0);}